mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 19:29:27 +02:00
Amiga: Workbench 1.x compatibilty via the AMIGA_V1_2_ONLY define
This commit is contained in:
parent
136f042972
commit
c1f6a7afdd
@ -439,12 +439,16 @@ end;
|
|||||||
|
|
||||||
procedure MH_Set(Obj: PObject_; Tag, Data: PtrUInt);
|
procedure MH_Set(Obj: PObject_; Tag, Data: PtrUInt);
|
||||||
begin
|
begin
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
SetAttrs(Obj, [Tag, Data, TAG_END]);
|
SetAttrs(Obj, [Tag, Data, TAG_END]);
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function MH_Get(Obj: PObject_; Tag: PtrUInt): PtrUInt;
|
function MH_Get(Obj: PObject_; Tag: PtrUInt): PtrUInt;
|
||||||
begin
|
begin
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
GetAttr(Tag, Obj, MH_Get);
|
GetAttr(Tag, Obj, MH_Get);
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure MH_SetMutex(Obj: PObject_; n: Integer);
|
procedure MH_SetMutex(Obj: PObject_; n: Integer);
|
||||||
@ -1635,13 +1639,21 @@ end;
|
|||||||
// ************************************************************************
|
// ************************************************************************
|
||||||
function MH_NewObject(ClassPtr: PIClass; ClassID: PChar; const Tags: array of PtrUInt): APTR;
|
function MH_NewObject(ClassPtr: PIClass; ClassID: PChar; const Tags: array of PtrUInt): APTR;
|
||||||
begin
|
begin
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
MH_NewObject := nil;
|
||||||
|
{$else}
|
||||||
MH_NewObject := NewObject(ClassPtr, ClassID, Tags);
|
MH_NewObject := NewObject(ClassPtr, ClassID, Tags);
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function MH_NewObject(var Obj; ClassPtr: PIClass; ClassID: PChar; const Tags: array of PtrUInt): APTR;
|
function MH_NewObject(var Obj; ClassPtr: PIClass; ClassID: PChar; const Tags: array of PtrUInt): APTR;
|
||||||
begin
|
begin
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
MH_NewObject := nil;
|
||||||
|
{$else}
|
||||||
PObject_(Obj) := NewObject(ClassPtr, ClassID, Tags);
|
PObject_(Obj) := NewObject(ClassPtr, ClassID, Tags);
|
||||||
MH_NewObject := PObject_(Obj);
|
MH_NewObject := PObject_(Obj);
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// deprecated but widely used macros
|
// deprecated but widely used macros
|
||||||
|
@ -2250,6 +2250,120 @@ const
|
|||||||
var
|
var
|
||||||
GfxBase : PGfxBase = nil;
|
GfxBase : PGfxBase = nil;
|
||||||
|
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
FUNCTION AllocRaster(width : ULONG location 'd0'; height : ULONG location 'd1') : TPlanePtr; syscall GfxBase 492;
|
||||||
|
PROCEDURE FreeRaster(p : TPlanePtr location 'a0'; width : ULONG location 'd0'; height : ULONG location 'd1'); syscall GfxBase 498;
|
||||||
|
PROCEDURE InitBitMap(bitMap : pBitMap location 'a0'; depth : LONGINT location 'd0'; width : LONGINT location 'd1'; height : LONGINT location 'd2'); syscall GfxBase 390;
|
||||||
|
PROCEDURE InitRastPort(rp : pRastPort location 'a1'); syscall GfxBase 198;
|
||||||
|
PROCEDURE SetAPen(rp : pRastPort location 'a1'; pen : ULONG location 'd0'); syscall GfxBase 342;
|
||||||
|
PROCEDURE SetBPen(rp : pRastPort location 'a1'; pen : ULONG location 'd0'); syscall GfxBase 348;
|
||||||
|
PROCEDURE SetDrMd(rp : pRastPort location 'a1'; drawMode : ULONG location 'd0'); syscall GfxBase 354;
|
||||||
|
PROCEDURE SetRast(rp : pRastPort location 'a1'; pen : ULONG location 'd0'); syscall GfxBase 234;
|
||||||
|
|
||||||
|
PROCEDURE ClearEOL(rp : pRastPort location 'a1'); syscall GfxBase 042;
|
||||||
|
PROCEDURE ClearScreen(rp : pRastPort location 'a1'); syscall GfxBase 048;
|
||||||
|
PROCEDURE Draw(rp : pRastPort location 'a1'; x : LONGINT location 'd0'; y : LONGINT location 'd1'); syscall GfxBase 246;
|
||||||
|
PROCEDURE DrawEllipse(rp : pRastPort location 'a1'; xCenter : LONGINT location 'd0'; yCenter : LONGINT location 'd1'; a : LONGINT location 'd2'; b : LONGINT location 'd3'); syscall GfxBase 180;
|
||||||
|
PROCEDURE gfxMove(rp : pRastPort location 'a1'; x : LONGINT location 'd0'; y : LONGINT location 'd1'); syscall GfxBase 240;
|
||||||
|
PROCEDURE PolyDraw(rp : pRastPort location 'a1'; count : LONGINT location 'd0';const polyTable : PSmallInt location 'a0'); syscall GfxBase 336;
|
||||||
|
FUNCTION ReadPixel(rp : pRastPort location 'a1'; x : LONGINT location 'd0'; y : LONGINT location 'd1') : ULONG; syscall GfxBase 318;
|
||||||
|
PROCEDURE ScrollRaster(rp : pRastPort location 'a1'; dx : LONGINT location 'd0'; dy : LONGINT location 'd1'; xMin : LONGINT location 'd2'; yMin : LONGINT location 'd3'; xMax : LONGINT location 'd4'; yMax : LONGINT location 'd5'); syscall GfxBase 396;
|
||||||
|
FUNCTION GfxText(rp : pRastPort location 'a1';const string_ : pCHAR location 'a0'; count : ULONG location 'd0') : LONGINT; syscall GfxBase 060;
|
||||||
|
FUNCTION TextLength(rp : pRastPort location 'a1';const string_ : pCHAR location 'a0'; count : ULONG location 'd0') : smallint; syscall GfxBase 054;
|
||||||
|
FUNCTION WritePixel(rp : pRastPort location 'a1'; x : LONGINT location 'd0'; y : LONGINT location 'd1') : LONGINT; syscall GfxBase 324;
|
||||||
|
|
||||||
|
FUNCTION AreaDraw(rp : pRastPort location 'a1'; x : LONGINT location 'd0'; y : LONGINT location 'd1') : LONGINT; syscall GfxBase 258;
|
||||||
|
FUNCTION AreaEllipse(rp : pRastPort location 'a1'; xCenter : LONGINT location 'd0'; yCenter : LONGINT location 'd1'; a : LONGINT location 'd2'; b : LONGINT location 'd3') : LONGINT; syscall GfxBase 186;
|
||||||
|
FUNCTION AreaEnd(rp : pRastPort location 'a1') : LONGINT; syscall GfxBase 264;
|
||||||
|
FUNCTION AreaMove(rp : pRastPort location 'a1'; x : LONGINT location 'd0'; y : LONGINT location 'd1') : LONGINT; syscall GfxBase 252;
|
||||||
|
FUNCTION Flood(rp : pRastPort location 'a1'; mode : ULONG location 'd2'; x : LONGINT location 'd0'; y : LONGINT location 'd1') : LongBool; syscall GfxBase 330;
|
||||||
|
PROCEDURE InitArea(areaInfo : pAreaInfo location 'a0'; vectorBuffer : POINTER location 'a1'; maxVectors : LONGINT location 'd0'); syscall GfxBase 282;
|
||||||
|
FUNCTION InitTmpRas(tmpRas : pTmpRas location 'a0'; buffer : Pointer location 'a1'; size : LONGINT location 'd0') : pTmpRas; syscall GfxBase 468;
|
||||||
|
PROCEDURE RectFill(rp : pRastPort location 'a1'; xMin : LONGINT location 'd0'; yMin : LONGINT location 'd1'; xMax : LONGINT location 'd2'; yMax : LONGINT location 'd3'); syscall GfxBase 306;
|
||||||
|
|
||||||
|
PROCEDURE FreeColorMap(colorMap : pColorMap location 'a0'); syscall GfxBase 576;
|
||||||
|
FUNCTION GetColorMap(entries : LONGINT location 'd0') : pColorMap; syscall GfxBase 570;
|
||||||
|
FUNCTION GetRGB4(colorMap : pColorMap location 'a0'; entry : LONGINT location 'd0') : ULONG; syscall GfxBase 582;
|
||||||
|
PROCEDURE LoadRGB4(vp : pViewPort location 'a0';const colors : pWord location 'a1'; count : LONGINT location 'd0'); syscall GfxBase 192;
|
||||||
|
PROCEDURE SetRGB4(vp : pViewPort location 'a0'; index : LONGINT location 'd0'; red : ULONG location 'd1'; green : ULONG location 'd2'; blue : ULONG location 'd3'); syscall GfxBase 288;
|
||||||
|
PROCEDURE SetRGB4CM(colorMap : pColorMap location 'a0'; index : LONGINT location 'd0'; red : ULONG location 'd1'; green : ULONG location 'd2'; blue : ULONG location 'd3'); syscall GfxBase 630;
|
||||||
|
|
||||||
|
FUNCTION BltBitMap(const srcBitMap : pBitMap location 'a0'; xSrc : LONGINT location 'd0'; ySrc : LONGINT location 'd1'; destBitMap : pBitMap location 'a1'; xDest : LONGINT location 'd2'; yDest : LONGINT location 'd3'; xSize : LONGINT location 'd4'; ySize : LONGINT location 'd5'; minterm : ULONG location 'd6'; mask : ULONG location 'd7'; tempA : pCHAR location 'a2') : LONGINT; syscall GfxBase 030;
|
||||||
|
PROCEDURE BltBitMapRastPort(const srcBitMap : pBitMap location 'a0'; xSrc : LONGINT location 'd0'; ySrc : LONGINT location 'd1'; destRP : pRastPort location 'a1'; xDest : LONGINT location 'd2'; yDest : LONGINT location 'd3'; xSize : LONGINT location 'd4'; ySize : LONGINT location 'd5'; minterm : ULONG location 'd6'); syscall GfxBase 606;
|
||||||
|
PROCEDURE BltClear(memBlock : pointer location 'a1'; byteCount : ULONG location 'd0'; flags : ULONG location 'd1'); syscall GfxBase 300;
|
||||||
|
PROCEDURE BltMaskBitMapRastPort(const srcBitMap : pBitMap location 'a0'; xSrc : LONGINT location 'd0'; ySrc : LONGINT location 'd1'; destRP : pRastPort location 'a1'; xDest : LONGINT location 'd2'; yDest : LONGINT location 'd3'; xSize : LONGINT location 'd4'; ySize : LONGINT location 'd5'; minterm : ULONG location 'd6';const bltMask : pCHAR location 'a2'); syscall GfxBase 636;
|
||||||
|
PROCEDURE BltPattern(rp : pRastPort location 'a1';const mask : pCHAR location 'a0'; xMin : LONGINT location 'd0'; yMin : LONGINT location 'd1'; xMax : LONGINT location 'd2'; yMax : LONGINT location 'd3'; maskBPR : ULONG location 'd4'); syscall GfxBase 312;
|
||||||
|
PROCEDURE BltTemplate(const source : pWORD location 'a0'; xSrc : LONGINT location 'd0'; srcMod : LONGINT location 'd1'; destRP : pRastPort location 'a1'; xDest : LONGINT location 'd2'; yDest : LONGINT location 'd3'; xSize : LONGINT location 'd4'; ySize : LONGINT location 'd5'); syscall GfxBase 036;
|
||||||
|
PROCEDURE ClipBlit(srcRP : pRastPort location 'a0'; xSrc : LONGINT location 'd0'; ySrc : LONGINT location 'd1'; destRP : pRastPort location 'a1'; xDest : LONGINT location 'd2'; yDest : LONGINT location 'd3'; xSize : LONGINT location 'd4'; ySize : LONGINT location 'd5'; minterm : ULONG location 'd6'); syscall GfxBase 552;
|
||||||
|
PROCEDURE DisownBlitter; syscall GfxBase 462;
|
||||||
|
PROCEDURE OwnBlitter; syscall GfxBase 456;
|
||||||
|
PROCEDURE QBlit(blit : pbltnode location 'a1'); syscall GfxBase 276;
|
||||||
|
PROCEDURE QBSBlit(blit : pbltnode location 'a1'); syscall GfxBase 294;
|
||||||
|
PROCEDURE WaitBlit; syscall GfxBase 228;
|
||||||
|
|
||||||
|
PROCEDURE CBump(copList : pUCopList location 'a1'); syscall GfxBase 366;
|
||||||
|
PROCEDURE CMove(copList : pUCopList location 'a1'; destination : POINTER location 'a0'; data : LONGINT location 'd1'); syscall GfxBase 372;
|
||||||
|
PROCEDURE CWait(copList : pUCopList location 'a1'; v : LONGINT location 'd0'; h : LONGINT location 'd1'); syscall GfxBase 378;
|
||||||
|
PROCEDURE FreeCopList(copList : pCopList location 'a0'); syscall GfxBase 546;
|
||||||
|
PROCEDURE FreeCprList(cprList : pcprlist location 'a0'); syscall GfxBase 564;
|
||||||
|
PROCEDURE FreeVPortCopLists(vp : pViewPort location 'a0'); syscall GfxBase 540;
|
||||||
|
PROCEDURE InitView(view : pView location 'a1'); syscall GfxBase 360;
|
||||||
|
PROCEDURE InitVPort(vp : pViewPort location 'a0'); syscall GfxBase 204;
|
||||||
|
PROCEDURE LoadView(view : pView location 'a1'); syscall GfxBase 222;
|
||||||
|
FUNCTION MakeVPort(view : pView location 'a0'; vp : pViewPort location 'a1') : ULONG; syscall GfxBase 216;
|
||||||
|
FUNCTION MrgCop(view : pView location 'a1') : ULONG; syscall GfxBase 210;
|
||||||
|
PROCEDURE ScrollVPort(vp : pViewPort location 'a0'); syscall GfxBase 588;
|
||||||
|
FUNCTION UCopperListInit(uCopList : pUCopList location 'a0'; n : LONGINT location 'd0') : pCopList; syscall GfxBase 594;
|
||||||
|
FUNCTION VBeamPos : LONGINT; syscall GfxBase 384;
|
||||||
|
PROCEDURE WaitBOVP(vp : pViewPort location 'a0'); syscall GfxBase 402;
|
||||||
|
PROCEDURE WaitTOF; syscall GfxBase 270;
|
||||||
|
|
||||||
|
PROCEDURE AndRectRegion(region : pRegion location 'a0';const rectangle : pRectangle location 'a1'); syscall GfxBase 504;
|
||||||
|
FUNCTION AndRegionRegion(const srcRegion : pRegion location 'a0'; destRegion : pRegion location 'a1') : LongBool; syscall GfxBase 624;
|
||||||
|
FUNCTION AttemptLockLayerRom(layer : pLayer location 'a5') : LongBool; syscall GfxBase 654;
|
||||||
|
FUNCTION ClearRectRegion(region : pRegion location 'a0';const rectangle : pRectangle location 'a1') : LongBool; syscall GfxBase 522;
|
||||||
|
PROCEDURE ClearRegion(region : pRegion location 'a0'); syscall GfxBase 528;
|
||||||
|
PROCEDURE CopySBitMap(layer : pLayer location 'a0'); syscall GfxBase 450;
|
||||||
|
PROCEDURE DisposeRegion(region : pRegion location 'a0'); syscall GfxBase 534;
|
||||||
|
PROCEDURE LockLayerRom(layer : pLayer location 'a5'); syscall GfxBase 432;
|
||||||
|
FUNCTION NewRegion : pRegion; syscall GfxBase 516;
|
||||||
|
FUNCTION OrRectRegion(region : pRegion location 'a0';const rectangle : pRectangle location 'a1') : LongBool; syscall GfxBase 510;
|
||||||
|
FUNCTION OrRegionRegion(const srcRegion : pRegion location 'a0'; destRegion : pRegion location 'a1') : LongBool; syscall GfxBase 612;
|
||||||
|
PROCEDURE SyncSBitMap(layer : pLayer location 'a0'); syscall GfxBase 444;
|
||||||
|
PROCEDURE UnlockLayerRom(layer : pLayer location 'a5'); syscall GfxBase 438;
|
||||||
|
FUNCTION XorRectRegion(region : pRegion location 'a0';const rectangle : pRectangle location 'a1') : LongBool; syscall GfxBase 558;
|
||||||
|
FUNCTION XorRegionRegion(const srcRegion : pRegion location 'a0'; destRegion : pRegion location 'a1') : LongBool; syscall GfxBase 618;
|
||||||
|
|
||||||
|
PROCEDURE AddFont(textFont : pTextFont location 'a1'); syscall GfxBase 480;
|
||||||
|
PROCEDURE AskFont(rp : pRastPort location 'a1'; textAttr : pTextAttr location 'a0'); syscall GfxBase 474;
|
||||||
|
FUNCTION AskSoftStyle(rp : pRastPort location 'a1') : ULONG; syscall GfxBase 084;
|
||||||
|
PROCEDURE CloseFont(textFont : pTextFont location 'a1'); syscall GfxBase 078;
|
||||||
|
FUNCTION OpenFont(textAttr : pTextAttr location 'a0') : pTextFont; syscall GfxBase 072;
|
||||||
|
PROCEDURE RemFont(textFont : pTextFont location 'a1'); syscall GfxBase 486;
|
||||||
|
FUNCTION SetFont(rp : pRastPort location 'a1';const textFont : pTextFont location 'a0') : LONGINT; syscall GfxBase 066;
|
||||||
|
FUNCTION SetSoftStyle(rp : pRastPort location 'a1'; style : ULONG location 'd0'; enable : ULONG location 'd1') : ULONG; syscall GfxBase 090;
|
||||||
|
|
||||||
|
PROCEDURE AddAnimOb(anOb : pAnimOb location 'a0'; anKey : ppAnimOb location 'a1'; rp : pRastPort location 'a2'); syscall GfxBase 156;
|
||||||
|
PROCEDURE AddBob(bob : pBob location 'a0'; rp : pRastPort location 'a1'); syscall GfxBase 096;
|
||||||
|
PROCEDURE AddVSprite(vSprite : pVSprite location 'a0'; rp : pRastPort location 'a1'); syscall GfxBase 102;
|
||||||
|
PROCEDURE Animate(anKey : ppAnimOb location 'a0'; rp : pRastPort location 'a1'); syscall GfxBase 162;
|
||||||
|
PROCEDURE ChangeSprite(vp : pViewPort location 'a0'; sprite : pSimpleSprite location 'a1'; newData : pWORD location 'a2'); syscall GfxBase 420;
|
||||||
|
PROCEDURE DoCollision(rp : pRastPort location 'a1'); syscall GfxBase 108;
|
||||||
|
PROCEDURE DrawGList(rp : pRastPort location 'a1'; vp : pViewPort location 'a0'); syscall GfxBase 114;
|
||||||
|
PROCEDURE FreeGBuffers(anOb : pAnimOb location 'a0'; rp : pRastPort location 'a1'; flag : LONGINT location 'd0'); syscall GfxBase 600;
|
||||||
|
PROCEDURE FreeSprite(num : LONGINT location 'd0'); syscall GfxBase 414;
|
||||||
|
FUNCTION GetGBuffers(anOb : pAnimOb location 'a0'; rp : pRastPort location 'a1'; flag : LONGINT location 'd0') : LongBool; syscall GfxBase 168;
|
||||||
|
FUNCTION GetSprite(sprite : pSimpleSprite location 'a0'; num : LONGINT location 'd0') : smallint; syscall GfxBase 408;
|
||||||
|
PROCEDURE InitGels(head : pVSprite location 'a0'; tail : pVSprite location 'a1'; gelsInfo : pGelsInfo location 'a2'); syscall GfxBase 120;
|
||||||
|
PROCEDURE InitGMasks(anOb : pAnimOb location 'a0'); syscall GfxBase 174;
|
||||||
|
PROCEDURE InitMasks(vSprite : pVSprite location 'a0'); syscall GfxBase 126;
|
||||||
|
PROCEDURE MoveSprite(vp : pViewPort location 'a0'; sprite : pSimpleSprite location 'a1'; x : LONGINT location 'd0'; y : LONGINT location 'd1'); syscall GfxBase 426;
|
||||||
|
PROCEDURE RemIBob(bob : pBob location 'a0'; rp : pRastPort location 'a1'; vp : pViewPort location 'a2'); syscall GfxBase 132;
|
||||||
|
PROCEDURE RemVSprite(vSprite : pVSprite location 'a0'); syscall GfxBase 138;
|
||||||
|
PROCEDURE SetCollision(num : ULONG location 'd0'; routine : tPROCEDURE location 'a0'; gelsInfo : pGelsInfo location 'a1'); syscall GfxBase 144;
|
||||||
|
PROCEDURE SortGList(rp : pRastPort location 'a1'); syscall GfxBase 150;
|
||||||
|
{$else}
|
||||||
PROCEDURE AddAnimOb(anOb : pAnimOb location 'a0'; anKey : ppAnimOb location 'a1'; rp : pRastPort location 'a2'); syscall GfxBase 156;
|
PROCEDURE AddAnimOb(anOb : pAnimOb location 'a0'; anKey : ppAnimOb location 'a1'; rp : pRastPort location 'a2'); syscall GfxBase 156;
|
||||||
PROCEDURE AddBob(bob : pBob location 'a0'; rp : pRastPort location 'a1'); syscall GfxBase 096;
|
PROCEDURE AddBob(bob : pBob location 'a0'; rp : pRastPort location 'a1'); syscall GfxBase 096;
|
||||||
PROCEDURE AddFont(textFont : pTextFont location 'a1'); syscall GfxBase 480;
|
PROCEDURE AddFont(textFont : pTextFont location 'a1'); syscall GfxBase 480;
|
||||||
@ -2424,6 +2538,9 @@ function ObtainBestPen(cm : pColorMap; r : ULONG; g : ULONG; b : ULONG; Const ar
|
|||||||
procedure SetRPAttrs(rp : pRastPort; Const argv : array of PtrUInt);
|
procedure SetRPAttrs(rp : pRastPort; Const argv : array of PtrUInt);
|
||||||
function VideoControlTags(colorMap : pColorMap; Const argv : array of PtrUInt) : LongWord;
|
function VideoControlTags(colorMap : pColorMap; Const argv : array of PtrUInt) : LongWord;
|
||||||
function WeighTAMatchTags(reqTextAttr : pTextAttr; targetTextAttr : pTextAttr; Const argv : array of PtrUInt) : smallint;
|
function WeighTAMatchTags(reqTextAttr : pTextAttr; targetTextAttr : pTextAttr; Const argv : array of PtrUInt) : smallint;
|
||||||
|
PROCEDURE SafeSetOutlinePen(w : pRastPort; c : byte);
|
||||||
|
PROCEDURE SafeSetWriteMask( w : pRastPort ; m : smallint ) ;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
{ gfxmacros }
|
{ gfxmacros }
|
||||||
|
|
||||||
@ -2433,9 +2550,7 @@ PROCEDURE SetAfPt(w: pRastPort;p: Pointer; n: Byte);
|
|||||||
PROCEDURE SetDrPt(w: pRastPort;p: Word);
|
PROCEDURE SetDrPt(w: pRastPort;p: Word);
|
||||||
PROCEDURE SetOPen(w: pRastPort;c: Byte);
|
PROCEDURE SetOPen(w: pRastPort;c: Byte);
|
||||||
PROCEDURE SetWrMsk(w: pRastPort; m: Byte);
|
PROCEDURE SetWrMsk(w: pRastPort; m: Byte);
|
||||||
|
procedure RemBob(Bob: PBob); inline;
|
||||||
PROCEDURE SafeSetOutlinePen(w : pRastPort; c : byte);
|
|
||||||
PROCEDURE SafeSetWriteMask( w : pRastPort ; m : smallint ) ;
|
|
||||||
|
|
||||||
PROCEDURE OFF_DISPLAY (cust: pCustom);
|
PROCEDURE OFF_DISPLAY (cust: pCustom);
|
||||||
PROCEDURE ON_DISPLAY (cust: pCustom);
|
PROCEDURE ON_DISPLAY (cust: pCustom);
|
||||||
@ -2449,8 +2564,85 @@ function AreaCircle(Rp: PRastPort; xCenter, yCenter, r: SmallInt): LongWord; inl
|
|||||||
|
|
||||||
function RasSize(w, h: Word): Integer;
|
function RasSize(w, h: Word): Integer;
|
||||||
|
|
||||||
|
function CreateBitMap(Width, Height, Depth: Integer): PBitmap;
|
||||||
|
procedure DestroyBitMap(MyBM: PBitmap; Width, Height, Depth: Integer);
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
procedure SetABPenDrMd(Rp: PRastPort; APen, BPen, Drawmode: LongWord); inline;
|
||||||
|
function AllocBitMap(SizeX, SizeY, Depth, Flags: LongWord; friend_bitmap: PBitMap): PBitMap;
|
||||||
|
procedure FreeBitMap(Bm: PBitMap);
|
||||||
|
function GetBitMapAttr(Bm: PBitMap; AttrNum: LongWord): LongWord;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
IMPLEMENTATION
|
IMPLEMENTATION
|
||||||
|
|
||||||
|
procedure RemBob(Bob: PBob);
|
||||||
|
begin
|
||||||
|
Bob^.Flags := Bob^.Flags or BOBSAWAY;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function CreateBitMap(Width, Height, Depth: Integer): PBitmap;
|
||||||
|
var
|
||||||
|
MyBM: PBitmap;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
MyBM := ExecAllocMem(SizeOf(TBitMap), MEMF_CLEAR or MEMF_PUBLIC);
|
||||||
|
for i := 0 to Depth - 1 do
|
||||||
|
MyBM^.Planes[i] := AllocRaster(Width, Height);
|
||||||
|
for i := Depth to 7 do
|
||||||
|
MyBM^.Planes[i] := nil;
|
||||||
|
MyBM^.Flags := MyBM^.Flags or BMF_STANDARD;
|
||||||
|
CreateBitMap := MyBM;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure DestroyBitMap(MyBM: PBitmap; Width, Height, Depth: Integer);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if MyBM <> nil then
|
||||||
|
begin
|
||||||
|
for i := 0 to Depth - 1 do
|
||||||
|
if MyBM^.Planes[i] <> nil then
|
||||||
|
FreeRaster(MyBM^.Planes[i], Width, Height);
|
||||||
|
FreeMem(MyBM, SizeOf(TBitMap));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
procedure SetABPenDrMd(Rp: PRastPort; APen, BPen, Drawmode: LongWord);
|
||||||
|
begin
|
||||||
|
SetAPen(RP, APen);
|
||||||
|
SetBPen(RP, BPen);
|
||||||
|
SetDrMd(RP, DrawMode);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function AllocBitMap(SizeX, SizeY, Depth, Flags: LongWord; friend_bitmap: PBitMap): PBitMap;
|
||||||
|
begin
|
||||||
|
AllocBitMap := CreateBitmap(SizeX, SizeY, Depth);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure FreeBitMap(Bm: PBitMap);
|
||||||
|
begin
|
||||||
|
if bm <> nil then
|
||||||
|
DestroyBitMap(bm, Bm^.BytesPerRow * 8, bm^.Rows, bm^.Depth);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetBitMapAttr(Bm: PBitMap; AttrNum: LongWord): LongWord;
|
||||||
|
begin
|
||||||
|
case AttrNum of
|
||||||
|
BMA_HEIGHT: GetBitMapAttr := bm^.Rows;
|
||||||
|
BMA_WIDTH: GetBitMapAttr := bm^.BytesPerRow * 8;
|
||||||
|
BMA_DEPTH: GetBitMapAttr := bm^.Depth;
|
||||||
|
BMA_FLAGS: GetBitMapAttr := bm^.Flags and (BMF_DISPLAYABLE or BMF_INTERLEAVED or BMF_STANDARD);
|
||||||
|
else
|
||||||
|
GetBitMapAttr := 0;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
function AllocSpriteData(bm : pBitMap; Const argv : array of PtrUInt) : pExtSprite;
|
function AllocSpriteData(bm : pBitMap; Const argv : array of PtrUInt) : pExtSprite;
|
||||||
begin
|
begin
|
||||||
AllocSpriteData := AllocSpriteDataA(bm,@argv);
|
AllocSpriteData := AllocSpriteDataA(bm,@argv);
|
||||||
@ -2501,6 +2693,26 @@ begin
|
|||||||
WeighTAMatchTags := WeighTAMatch(reqTextAttr,targetTextAttr,@argv);
|
WeighTAMatchTags := WeighTAMatch(reqTextAttr,targetTextAttr,@argv);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
PROCEDURE SafeSetOutlinePen(w : pRastPort; c : byte);
|
||||||
|
begin
|
||||||
|
IF pGfxBase(GfxBase)^.LibNode.Lib_Version < 39 THEN begin
|
||||||
|
w^.AOlPen := c;
|
||||||
|
w^.Flags := w^.Flags OR AREAOUTLINE;
|
||||||
|
END ELSE begin
|
||||||
|
c := SetOutlinePen(w,c);
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
|
||||||
|
PROCEDURE SafeSetWriteMask( w : pRastPort ; m : smallint ) ;
|
||||||
|
VAR x : smallint ;
|
||||||
|
BEGIN
|
||||||
|
IF pGfxBase(GfxBase)^.LibNode.Lib_Version < 39 THEN w^.Mask := BYTE(m)
|
||||||
|
ELSE x := SetWriteMask( w, m );
|
||||||
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
{$endif}
|
||||||
|
|
||||||
PROCEDURE BNDRYOFF (w: pRastPort);
|
PROCEDURE BNDRYOFF (w: pRastPort);
|
||||||
BEGIN
|
BEGIN
|
||||||
WITH w^ DO BEGIN
|
WITH w^ DO BEGIN
|
||||||
@ -2549,22 +2761,6 @@ BEGIN
|
|||||||
w^.Mask := m;
|
w^.Mask := m;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
PROCEDURE SafeSetOutlinePen(w : pRastPort; c : byte);
|
|
||||||
begin
|
|
||||||
IF pGfxBase(GfxBase)^.LibNode.Lib_Version < 39 THEN begin
|
|
||||||
w^.AOlPen := c;
|
|
||||||
w^.Flags := w^.Flags OR AREAOUTLINE;
|
|
||||||
END ELSE begin
|
|
||||||
c := SetOutlinePen(w,c);
|
|
||||||
END;
|
|
||||||
END;
|
|
||||||
|
|
||||||
PROCEDURE SafeSetWriteMask( w : pRastPort ; m : smallint ) ;
|
|
||||||
VAR x : smallint ;
|
|
||||||
BEGIN
|
|
||||||
IF pGfxBase(GfxBase)^.LibNode.Lib_Version < 39 THEN w^.Mask := BYTE(m)
|
|
||||||
ELSE x := SetWriteMask( w, m );
|
|
||||||
END;
|
|
||||||
|
|
||||||
PROCEDURE OFF_DISPLAY (cust: pCustom);
|
PROCEDURE OFF_DISPLAY (cust: pCustom);
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -1575,7 +1575,43 @@ CONST
|
|||||||
{ tags for NewLoadSeg }
|
{ tags for NewLoadSeg }
|
||||||
{ no tags are defined yet for NewLoadSeg }
|
{ no tags are defined yet for NewLoadSeg }
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
PROCEDURE DOSClose(file_ : BPTR location 'd1'); syscall _DOSBase 036;
|
||||||
|
FUNCTION DOSOpen(const name : pCHAR location 'd1'; accessMode : LONGINT location 'd2') : BPTR; syscall _DOSBase 030;
|
||||||
|
FUNCTION DOSRead(file_ : BPTR location 'd1'; buffer : POINTER location 'd2'; length : LONGINT location 'd3') : LONGINT; syscall _DOSBase 042;
|
||||||
|
FUNCTION DOSSeek(file_ : BPTR location 'd1'; position : LONGINT location 'd2'; offset : LONGINT location 'd3') : LONGINT; syscall _DOSBase 066;
|
||||||
|
FUNCTION DOSWrite(file_ : BPTR location 'd1'; buffer : POINTER location 'd2'; length : LONGINT location 'd3') : LONGINT; syscall _DOSBase 048;
|
||||||
|
|
||||||
|
FUNCTION CreateDir(const name : pCHAR location 'd1') : BPTR; syscall _DOSBase 120;
|
||||||
|
FUNCTION CurrentDir(lock : BPTR location 'd1') : BPTR; syscall _DOSBase 126;
|
||||||
|
FUNCTION DOSDeleteFile(const name : STRPTR location 'd1') : LongBool; syscall _DOSBase 072;
|
||||||
|
FUNCTION Examine(lock : BPTR location 'd1'; fileInfoBlock : pFileInfoBlock location 'd2') : LongBool; syscall _DOSBase 102;
|
||||||
|
FUNCTION ExNext(lock : BPTR location 'd1'; fileInfoBlock : pFileInfoBlock location 'd2') : LongBool; syscall _DOSBase 108;
|
||||||
|
FUNCTION Info(lock : BPTR location 'd1'; parameterBlock : pInfoData location 'd2') : LongBool; syscall _DOSBase 114;
|
||||||
|
FUNCTION ParentDir(lock : BPTR location 'd1') : BPTR; syscall _DOSBase 210;
|
||||||
|
FUNCTION DOSRename(const oldName : STRPTR location 'd1';const newName : STRPTR location 'd2') : LongBool; syscall _DOSBase 078;
|
||||||
|
FUNCTION SetComment(const name : pCHAR location 'd1';const comment : pCHAR location 'd2') : LongBool; syscall _DOSBase 180;
|
||||||
|
FUNCTION SetProtection(const name : pCHAR location 'd1'; protect : LONGINT location 'd2') : LongBool; syscall _DOSBase 186;
|
||||||
|
|
||||||
|
FUNCTION DupLock(lock : BPTR location 'd1') : BPTR; syscall _DOSBase 096;
|
||||||
|
FUNCTION DOSInput : BPTR; syscall _DOSBase 054;
|
||||||
|
FUNCTION IoErr : LONGINT; syscall _DOSBase 132;
|
||||||
|
FUNCTION IsInteractive(file_ : BPTR location 'd1') : LongBool; syscall _DOSBase 216;
|
||||||
|
FUNCTION Lock(const name : pCHAR location 'd1'; type_ : LONGINT location 'd2') : LONGINT; syscall _DOSBase 084;
|
||||||
|
FUNCTION DOSOutput : BPTR; syscall _DOSBase 060;
|
||||||
|
PROCEDURE UnLock(lock : BPTR location 'd1'); syscall _DOSBase 090;
|
||||||
|
|
||||||
|
FUNCTION CreateProc(const name : pCHAR location 'd1'; pri : LONGINT location 'd2'; segList : BPTR location 'd3'; stackSize : LONGINT location 'd4') : pMsgPort; syscall _DOSBase 138;
|
||||||
|
PROCEDURE DateStamp(date : pDateStamp location 'd1'); syscall _DOSBase 192;
|
||||||
|
PROCEDURE DOSDelay(timeout : LONGINT location 'd1'); syscall _DOSBase 198;
|
||||||
|
FUNCTION DeviceProc(const name : pCHAR location 'd1') : pMsgPort; syscall _DOSBase 174;
|
||||||
|
PROCEDURE DOSExit(returnCode : LONGINT location 'd1'); syscall _DOSBase 144;
|
||||||
|
FUNCTION WaitForChar(file_ : BPTR location 'd1'; timeout : LONGINT location 'd2') : LongBool; syscall _DOSBase 204;
|
||||||
|
|
||||||
|
FUNCTION Execute(const string_ : pCHAR location 'd1'; file_ : BPTR location 'd2'; file2 : BPTR location 'd3') : LongBool; syscall _DOSBase 222;
|
||||||
|
FUNCTION LoadSeg(const name : pCHAR location 'd1') : LONGINT; syscall _DOSBase 150;
|
||||||
|
PROCEDURE UnLoadSeg(seglist : BPTR location 'd1'); syscall _DOSBase 156;
|
||||||
|
{$else}
|
||||||
PROCEDURE AbortPkt(port : pMsgPort location 'd1'; pkt : pDosPacket location 'd2'); syscall _DOSBase 264;
|
PROCEDURE AbortPkt(port : pMsgPort location 'd1'; pkt : pDosPacket location 'd2'); syscall _DOSBase 264;
|
||||||
FUNCTION AddBuffers(const name : pCHAR location 'd1'; number : LONGINT location 'd2') : LongBool; syscall _DOSBase 732;
|
FUNCTION AddBuffers(const name : pCHAR location 'd1'; number : LONGINT location 'd2') : LongBool; syscall _DOSBase 732;
|
||||||
FUNCTION AddDosEntry(dlist : pDosList location 'd1') : LongBool; syscall _DOSBase 678;
|
FUNCTION AddDosEntry(dlist : pDosList location 'd1') : LongBool; syscall _DOSBase 678;
|
||||||
@ -1739,10 +1775,13 @@ FUNCTION VPrintf(const format : pCHAR location 'd1'; const argarray : PLongInt l
|
|||||||
FUNCTION WaitForChar(file_ : BPTR location 'd1'; timeout : LONGINT location 'd2') : LongBool; syscall _DOSBase 204;
|
FUNCTION WaitForChar(file_ : BPTR location 'd1'; timeout : LONGINT location 'd2') : LongBool; syscall _DOSBase 204;
|
||||||
FUNCTION WaitPkt : pDosPacket; syscall _DOSBase 252;
|
FUNCTION WaitPkt : pDosPacket; syscall _DOSBase 252;
|
||||||
FUNCTION WriteChars(const buf : pCHAR location 'd1'; buflen : ULONG location 'd2') : LONGINT; syscall _DOSBase 942;
|
FUNCTION WriteChars(const buf : pCHAR location 'd1'; buflen : ULONG location 'd2') : LONGINT; syscall _DOSBase 942;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
FUNCTION BADDR(bval :BPTR): POINTER;
|
FUNCTION BADDR(bval :BPTR): POINTER;
|
||||||
FUNCTION MKBADDR(adr: Pointer): BPTR;
|
FUNCTION MKBADDR(adr: Pointer): BPTR;
|
||||||
|
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
// var args version
|
// var args version
|
||||||
FUNCTION AllocDosObjectTags(type_ : ULONG; Const argv : Array of PtrUInt) : POINTER;
|
FUNCTION AllocDosObjectTags(type_ : ULONG; Const argv : Array of PtrUInt) : POINTER;
|
||||||
FUNCTION CreateNewProcTags(Const argv : Array of PtrUInt) : pProcess;
|
FUNCTION CreateNewProcTags(Const argv : Array of PtrUInt) : pProcess;
|
||||||
@ -1819,6 +1858,7 @@ FUNCTION SplitName(const name : string; seperator : ULONG; buf : pCHAR; oldpos :
|
|||||||
FUNCTION StrToLong(const string_ : string; VAR value : LONGINT) : LONGINT;
|
FUNCTION StrToLong(const string_ : string; VAR value : LONGINT) : LONGINT;
|
||||||
FUNCTION SystemTagList(const command : string;const tags : pTagItem) : LONGINT;
|
FUNCTION SystemTagList(const command : string;const tags : pTagItem) : LONGINT;
|
||||||
FUNCTION DOSSystem(const command : string;const tags : pTagItem) : LONGINT;
|
FUNCTION DOSSystem(const command : string;const tags : pTagItem) : LONGINT;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
IMPLEMENTATION
|
IMPLEMENTATION
|
||||||
|
|
||||||
@ -1832,7 +1872,7 @@ FUNCTION MKBADDR(adr : POINTER): BPTR; inline;
|
|||||||
BEGIN
|
BEGIN
|
||||||
MKBADDR := BPTR( PTRUINT(adr) shr 2);
|
MKBADDR := BPTR( PTRUINT(adr) shr 2);
|
||||||
END;
|
END;
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
FUNCTION AllocDosObjectTags(type_ : ULONG; Const argv : Array of PtrUInt) : POINTER;
|
FUNCTION AllocDosObjectTags(type_ : ULONG; Const argv : Array of PtrUInt) : POINTER;
|
||||||
begin
|
begin
|
||||||
AllocDosObjectTags := AllocDosObjectTagList(type_, @argv);
|
AllocDosObjectTags := AllocDosObjectTagList(type_, @argv);
|
||||||
@ -2192,7 +2232,7 @@ FUNCTION DOSSystem(const command : string;const tags : pTagItem) : LONGINT;
|
|||||||
begin
|
begin
|
||||||
DOSSystem := DOSSystem(PChar(RawByteString(command)),tags);
|
DOSSystem := DOSSystem(PChar(RawByteString(command)),tags);
|
||||||
end;
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
END. (* UNIT DOS *)
|
END. (* UNIT DOS *)
|
||||||
|
|
||||||
|
@ -73,6 +73,7 @@ function CreateTask (name: STRPTR; pri: longint;
|
|||||||
procedure DeleteTask (task: pTask); inline;
|
procedure DeleteTask (task: pTask); inline;
|
||||||
procedure NewList (list: pList); inline;
|
procedure NewList (list: pList); inline;
|
||||||
|
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
// moved to commodities, use them from there
|
// moved to commodities, use them from there
|
||||||
{* Commodities support functions from amiga.lib *}
|
{* Commodities support functions from amiga.lib *}
|
||||||
procedure FreeIEvents (events: pInputEvent); inline;
|
procedure FreeIEvents (events: pInputEvent); inline;
|
||||||
@ -99,6 +100,7 @@ function CoerceMethodA(cl : pIClass; obj : pObject_; msg : APTR): ulong; inline;
|
|||||||
function SetSuperAttrsA(cl : pIClass; obj: pObject_; msg : APTR): ulong; inline;
|
function SetSuperAttrsA(cl : pIClass; obj: pObject_; msg : APTR): ulong; inline;
|
||||||
|
|
||||||
function DoMethod(obj: PObject_; Params: array of DWord): LongWord; inline;
|
function DoMethod(obj: PObject_; Params: array of DWord): LongWord; inline;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
// moved to utility, use them from there
|
// moved to utility, use them from there
|
||||||
procedure HookEntry;
|
procedure HookEntry;
|
||||||
@ -256,6 +258,7 @@ begin
|
|||||||
CxTranslate := Commodities.CxTranslate(ie)
|
CxTranslate := Commodities.CxTranslate(ie)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
function DoMethodA(obj : pObject_; msg : APTR): ulong; inline;
|
function DoMethodA(obj : pObject_; msg : APTR): ulong; inline;
|
||||||
begin
|
begin
|
||||||
DoMethodA := Intuition.DoMethodA(obj, msg);
|
DoMethodA := Intuition.DoMethodA(obj, msg);
|
||||||
@ -280,7 +283,7 @@ function SetSuperAttrsA(cl : pIClass; obj: pObject_; msg : APTR): ulong; inline;
|
|||||||
begin
|
begin
|
||||||
SetSuperAttrsA := Intuition.SetSuperAttrsA(cl, obj, msg);
|
SetSuperAttrsA := Intuition.SetSuperAttrsA(cl, obj, msg);
|
||||||
end;
|
end;
|
||||||
|
{$endif}
|
||||||
{ Do *NOT* change this to nostackframe! }
|
{ Do *NOT* change this to nostackframe! }
|
||||||
{ The compiler will build a stackframe with link/unlk. So that will actually correct
|
{ The compiler will build a stackframe with link/unlk. So that will actually correct
|
||||||
the stackpointer for both Pascal/StdCall and Cdecl functions, so the stackpointer
|
the stackpointer for both Pascal/StdCall and Cdecl functions, so the stackpointer
|
||||||
@ -333,7 +336,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
VPrintf(Fmtstr,@argarray[0]);
|
VPrintf(Fmtstr,@argarray[0]);
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure printf(Fmtstr : string; const Args : array of const);
|
procedure printf(Fmtstr : string; const Args : array of const);
|
||||||
|
@ -1176,6 +1176,111 @@ CONST
|
|||||||
var
|
var
|
||||||
ExecBase: PExecBase absolute _ExecBase;
|
ExecBase: PExecBase absolute _ExecBase;
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
FUNCTION Supervisor(userFunction : tPROCEDURE location 'a5') : ULONG; syscall _ExecBase 030;
|
||||||
|
PROCEDURE Alert(alertNum : ULONG location 'd7'); syscall _ExecBase 108;
|
||||||
|
PROCEDURE Debug(flags : ULONG location 'd0'); syscall _ExecBase 114;
|
||||||
|
FUNCTION FindResident(const name : pCHAR location 'a1') : pResident; syscall _ExecBase 096;
|
||||||
|
PROCEDURE InitCode(startClass : ULONG location 'd0'; version : ULONG location 'd1'); syscall _ExecBase 072;
|
||||||
|
FUNCTION InitResident(const resident_ : pResident location 'a1'; segList : ULONG location 'd0') : POINTER; syscall _ExecBase 102;
|
||||||
|
PROCEDURE InitStruct(const initTable : POINTER location 'a1'; memory : POINTER location 'a2'; size : ULONG location 'd0'); syscall _ExecBase 078;
|
||||||
|
|
||||||
|
PROCEDURE AddIntServer(intNumber : LONGINT location 'd0'; interrupt_ : pInterrupt location 'a1'); syscall _ExecBase 168;
|
||||||
|
PROCEDURE Cause(interrupt_ : pInterrupt location 'a1'); syscall _ExecBase 180;
|
||||||
|
PROCEDURE Disable; syscall _ExecBase 120;
|
||||||
|
PROCEDURE Enable; syscall _ExecBase 126;
|
||||||
|
PROCEDURE Forbid; syscall _ExecBase 132;
|
||||||
|
PROCEDURE Permit; syscall _ExecBase 138;
|
||||||
|
PROCEDURE RemIntServer(intNumber : LONGINT location 'd0'; interrupt_ : pInterrupt location 'a1'); syscall _ExecBase 174;
|
||||||
|
FUNCTION SetIntVector(intNumber : LONGINT location 'd0';const interrupt_ : pInterrupt location 'a1') : pInterrupt; syscall _ExecBase 162;
|
||||||
|
FUNCTION SetSR(newSR : ULONG location 'd0'; mask : ULONG location 'd1') : ULONG; syscall _ExecBase 144;
|
||||||
|
FUNCTION SuperState : POINTER; syscall _ExecBase 150;
|
||||||
|
PROCEDURE UserState(sysStack : POINTER location 'd0'); syscall _ExecBase 156;
|
||||||
|
|
||||||
|
FUNCTION AllocAbs(byteSize : ULONG location 'd0'; location : POINTER location 'a1') : POINTER; syscall _ExecBase 204;
|
||||||
|
FUNCTION Allocate(freeList : pMemHeader location 'a0'; byteSize : ULONG location 'd0') : POINTER; syscall _ExecBase 186;
|
||||||
|
FUNCTION AllocEntry(entry : pMemList location 'a0') : pMemList; syscall _ExecBase 222;
|
||||||
|
FUNCTION ExecAllocMem(byteSize : ULONG location 'd0'; requirements : ULONG location 'd1') : POINTER; syscall _ExecBase 198;
|
||||||
|
FUNCTION AvailMem(requirements : ULONG location 'd1') : ULONG; syscall _ExecBase 216;
|
||||||
|
PROCEDURE Deallocate(freeList : pMemHeader location 'a0'; memoryBlock : POINTER location 'a1'; byteSize : ULONG location 'd1'); syscall _ExecBase 192;
|
||||||
|
PROCEDURE FreeEntry(entry : pMemList location 'a0'); syscall _ExecBase 228;
|
||||||
|
PROCEDURE ExecFreeMem(memoryBlock : POINTER location 'a1'; byteSize : ULONG location 'd0'); syscall _ExecBase 210;
|
||||||
|
|
||||||
|
PROCEDURE AddHead(list : pList location 'a0'; node : pNode location 'a1'); syscall _ExecBase 240;
|
||||||
|
PROCEDURE AddTail(list : pList location 'a0'; node : pNode location 'a1'); syscall _ExecBase 246;
|
||||||
|
PROCEDURE Enqueue(list : pList location 'a0'; node : pNode location 'a1'); syscall _ExecBase 270;
|
||||||
|
FUNCTION FindName(list : pList location 'a0'; const name : pCHAR location 'a1') : pNode; syscall _ExecBase 276;
|
||||||
|
PROCEDURE ExecInsert(list : pList location 'a0'; node : pNode location 'a1'; pred : pNode location 'a2'); syscall _ExecBase 234;
|
||||||
|
FUNCTION RemHead(list : pList location 'a0') : pNode; syscall _ExecBase 258;
|
||||||
|
PROCEDURE Remove(node : pNode location 'a1'); syscall _ExecBase 252;
|
||||||
|
FUNCTION RemTail(list : pList location 'a0') : pNode; syscall _ExecBase 264;
|
||||||
|
|
||||||
|
FUNCTION AddTask(task : pTask location 'a1';const initPC : POINTER location 'a2';const finalPC : POINTER location 'a3') : POINTER; syscall _ExecBase 282;
|
||||||
|
FUNCTION AllocSignal(signalNum : LONGINT location 'd0') : shortint; syscall _ExecBase 330;
|
||||||
|
FUNCTION AllocTrap(trapNum : LONGINT location 'd0') : LONGINT; syscall _ExecBase 342;
|
||||||
|
FUNCTION FindTask(const name : pCHAR location 'a1') : pTask; syscall _ExecBase 294;
|
||||||
|
PROCEDURE FreeSignal(signalNum : LONGINT location 'd0'); syscall _ExecBase 336;
|
||||||
|
PROCEDURE FreeTrap(trapNum : LONGINT location 'd0'); syscall _ExecBase 348;
|
||||||
|
PROCEDURE RemTask(task : pTask location 'a1'); syscall _ExecBase 288;
|
||||||
|
FUNCTION SetExcept(newSignals : ULONG location 'd0'; signalSet : ULONG location 'd1') : ULONG; syscall _ExecBase 312;
|
||||||
|
FUNCTION SetSignal(newSignals : ULONG location 'd0'; signalSet : ULONG location 'd1') : ULONG; syscall _ExecBase 306;
|
||||||
|
FUNCTION SetTaskPri(task : pTask location 'a1'; priority : LONGINT location 'd0') : shortint; syscall _ExecBase 300;
|
||||||
|
FUNCTION Wait(signalSet : ULONG location 'd0') : ULONG; syscall _ExecBase 318;
|
||||||
|
|
||||||
|
PROCEDURE AddPort(port : pMsgPort location 'a1'); syscall _ExecBase 354;
|
||||||
|
FUNCTION FindPort(const name : pCHAR location 'a1') : pMsgPort; syscall _ExecBase 390;
|
||||||
|
FUNCTION GetMsg(port : pMsgPort location 'a0') : pMessage; syscall _ExecBase 372;
|
||||||
|
PROCEDURE PutMsg(port : pMsgPort location 'a0'; message : pMessage location 'a1'); syscall _ExecBase 366;
|
||||||
|
PROCEDURE RemPort(port : pMsgPort location 'a1'); syscall _ExecBase 360;
|
||||||
|
PROCEDURE ReplyMsg(message : pMessage location 'a1'); syscall _ExecBase 378;
|
||||||
|
FUNCTION WaitPort(port : pMsgPort location 'a0') : pMessage; syscall _ExecBase 384;
|
||||||
|
|
||||||
|
PROCEDURE AddLibrary(lib : pLibrary location 'a1'); syscall _ExecBase 396;
|
||||||
|
PROCEDURE CloseLibrary(lib : pLibrary location 'a1'); syscall _ExecBase 414;
|
||||||
|
PROCEDURE MakeFunctions(const target : POINTER location 'a0';const functionArray : POINTER location 'a1';const funcDispBase :pointer location 'a2'); syscall _ExecBase 090;
|
||||||
|
FUNCTION MakeLibrary(const funcInit : POINTER location 'a0';const structInit : POINTER location 'a1'; libInit : tPROCEDURE location 'a2';dataSize : ULONG location 'd0'; segList : ULONG location 'd0') : pLibrary; syscall _ExecBase 084;
|
||||||
|
FUNCTION OldOpenLibrary(const libName : pCHAR location 'a1') : pLibrary; syscall _ExecBase 408;
|
||||||
|
FUNCTION OpenLibrary(const libName : pCHAR location 'a1'; version : ULONG location 'd0') : pLibrary; syscall _ExecBase 552;
|
||||||
|
PROCEDURE RemLibrary(lib : pLibrary location 'a1'); syscall _ExecBase 402;
|
||||||
|
FUNCTION SetFunction(lib : pLibrary location 'a1'; funcOffset : LONGINT location 'a0'; newFunction : tPROCEDURE location 'd0') : POINTER; syscall _ExecBase 420;
|
||||||
|
PROCEDURE SumLibrary(lib : pLibrary location 'a1'); syscall _ExecBase 426;
|
||||||
|
|
||||||
|
PROCEDURE AbortIO(ioRequest : pIORequest location 'a1'); syscall _ExecBase 480;
|
||||||
|
PROCEDURE AddDevice(device : pDevice location 'a1'); syscall _ExecBase 432;
|
||||||
|
FUNCTION CheckIO(ioRequest : pIORequest location 'a1') : pIORequest; syscall _ExecBase 468;
|
||||||
|
PROCEDURE CloseDevice(ioRequest : pIORequest location 'a1'); syscall _ExecBase 450;
|
||||||
|
FUNCTION DoIO(ioRequest : pIORequest location 'a1') : shortint; syscall _ExecBase 456;
|
||||||
|
FUNCTION OpenDevice(const devName : pCHAR location 'a0'; unite : ULONG location 'd0'; ioRequest : pIORequest location 'a1'; flags : ULONG location 'd1') : shortint; syscall _ExecBase 444;
|
||||||
|
PROCEDURE RemDevice(device : pDevice location 'a1'); syscall _ExecBase 438;
|
||||||
|
PROCEDURE SendIO(ioRequest : pIORequest location 'a1'); syscall _ExecBase 462;
|
||||||
|
FUNCTION WaitIO(ioRequest : pIORequest location 'a1') : shortint; syscall _ExecBase 474;
|
||||||
|
|
||||||
|
PROCEDURE AddResource(resource : POINTER location 'a1'); syscall _ExecBase 486;
|
||||||
|
FUNCTION OpenResource(const resName : pCHAR location 'a1') : POINTER; syscall _ExecBase 498;
|
||||||
|
PROCEDURE RemResource(resource : POINTER location 'a1'); syscall _ExecBase 492;
|
||||||
|
|
||||||
|
PROCEDURE AddSemaphore(sigSem : pSignalSemaphore location 'a1'); syscall _ExecBase 600;
|
||||||
|
FUNCTION AttemptSemaphore(sigSem : pSignalSemaphore location 'a0') : LongBool; syscall _ExecBase 576;
|
||||||
|
FUNCTION FindSemaphore(const sigSem : pCHAR location 'a1') : pSignalSemaphore; syscall _ExecBase 594;
|
||||||
|
PROCEDURE InitSemaphore(sigSem : pSignalSemaphore location 'a0'); syscall _ExecBase 558;
|
||||||
|
PROCEDURE ObtainSemaphore(sigSem : pSignalSemaphore location 'a0'); syscall _ExecBase 564;
|
||||||
|
PROCEDURE ObtainSemaphoreList(sigSem : pList location 'a0'); syscall _ExecBase 582;
|
||||||
|
FUNCTION Procure(sigSem : pSignalSemaphore location 'a0'; bidMsg : pSemaphoreMessage location 'a1') : LongBool; syscall _ExecBase 540;
|
||||||
|
PROCEDURE ReleaseSemaphore(sigSem : pSignalSemaphore location 'a0'); syscall _ExecBase 570;
|
||||||
|
PROCEDURE ReleaseSemaphoreList(sigSem : pList location 'a0'); syscall _ExecBase 588;
|
||||||
|
PROCEDURE RemSemaphore(sigSem : pSignalSemaphore location 'a1'); syscall _ExecBase 606;
|
||||||
|
PROCEDURE Vacate(sigSem : pSignalSemaphore location 'a0'; bidMsg : pSemaphoreMessage location 'a1'); syscall _ExecBase 546;
|
||||||
|
|
||||||
|
PROCEDURE AddMemList(size : ULONG location 'd0'; attributes : ULONG location 'd1'; pri : LONGINT location 'd2'; base : POINTER location 'a0'; const name : pCHAR location 'a1'); syscall _ExecBase 618;
|
||||||
|
PROCEDURE CopyMem(const source : POINTER location 'a0'; dest : POINTER location 'a1'; size : ULONG location 'd0'); syscall _ExecBase 624;
|
||||||
|
PROCEDURE CopyMemQuick(const source : POINTER location 'a0'; dest : POINTER location 'a1'; size : ULONG location 'd0'); syscall _ExecBase 630;
|
||||||
|
PROCEDURE SumKickData; syscall _ExecBase 612;
|
||||||
|
|
||||||
|
FUNCTION GetCC : ULONG; syscall _ExecBase 528;
|
||||||
|
function RawDoFmt(const formatString : pCHAR location 'a0';const dataStream : POINTER location 'a1'; putChProc : tPROCEDURE location 'a2'; putChData : POINTER location 'a3'): pointer; syscall _ExecBase 522;
|
||||||
|
FUNCTION TypeOfMem(const address : POINTER location 'a1') : ULONG; syscall _ExecBase 534;
|
||||||
|
|
||||||
|
{$else}
|
||||||
PROCEDURE AbortIO(ioRequest : pIORequest location 'a1'); syscall _ExecBase 480;
|
PROCEDURE AbortIO(ioRequest : pIORequest location 'a1'); syscall _ExecBase 480;
|
||||||
PROCEDURE AddDevice(device : pDevice location 'a1'); syscall _ExecBase 432;
|
PROCEDURE AddDevice(device : pDevice location 'a1'); syscall _ExecBase 432;
|
||||||
PROCEDURE AddHead(list : pList location 'a0'; node : pNode location 'a1'); syscall _ExecBase 240;
|
PROCEDURE AddHead(list : pList location 'a0'; node : pNode location 'a1'); syscall _ExecBase 240;
|
||||||
@ -1306,6 +1411,7 @@ FUNCTION AVL_FindNextNodeByAddress(CONST node : pAVLNode location 'a0') : pAVLNo
|
|||||||
FUNCTION AVL_FindNextNodeByKey(CONST root : pAVLNode location 'a0'; key : POINTER location 'a1'; func : POINTER location 'a2') : pAVLNode; syscall _ExecBase 894;
|
FUNCTION AVL_FindNextNodeByKey(CONST root : pAVLNode location 'a0'; key : POINTER location 'a1'; func : POINTER location 'a2') : pAVLNode; syscall _ExecBase 894;
|
||||||
FUNCTION AVL_FindFirstNode(CONST root : pAVLNode location 'a0') : pAVLNode; syscall _ExecBase 900;
|
FUNCTION AVL_FindFirstNode(CONST root : pAVLNode location 'a0') : pAVLNode; syscall _ExecBase 900;
|
||||||
FUNCTION AVL_FindLastNode(CONST root : pAVLNode location 'a0') : pAVLNode; syscall _ExecBase 906;
|
FUNCTION AVL_FindLastNode(CONST root : pAVLNode location 'a0') : pAVLNode; syscall _ExecBase 906;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
FUNCTION FindName(list : pList; const name : String) : pNode;
|
FUNCTION FindName(list : pList; const name : String) : pNode;
|
||||||
FUNCTION FindPort(const name : String) : pMsgPort;
|
FUNCTION FindPort(const name : String) : pMsgPort;
|
||||||
@ -1333,6 +1439,16 @@ function CreateTask(Name: STRPTR; Pri: LongInt; InitPC: Pointer; StackSize: Long
|
|||||||
procedure DeleteTask(Task: PTask);
|
procedure DeleteTask(Task: PTask);
|
||||||
procedure NewList(List: PList);
|
procedure NewList(List: PList);
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
function CreateMsgPort: PMsgPort;
|
||||||
|
procedure DeleteMsgPort(Port: PMsgPort);
|
||||||
|
|
||||||
|
function CreateIORequest(const Port: PMsgPort; Size: LongWord): PIORequest;
|
||||||
|
procedure DeleteIORequest(IOReq: PIORequest);
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
IMPLEMENTATION
|
IMPLEMENTATION
|
||||||
|
|
||||||
function BitMask(no :shortint): longint; inline;
|
function BitMask(no :shortint): longint; inline;
|
||||||
@ -1444,6 +1560,17 @@ begin
|
|||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
function CreateIORequest(const Port: PMsgPort; Size: LongWord): PIORequest;
|
||||||
|
begin
|
||||||
|
CreateIORequest := CreateExtIO(Port, Size);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure DeleteIORequest(IOReq: PIORequest);
|
||||||
|
begin
|
||||||
|
DeleteExtIO(IOReq);
|
||||||
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
function CreateStdIO(Port: PMsgPort): PIOStdReq;
|
function CreateStdIO(Port: PMsgPort): PIOStdReq;
|
||||||
begin
|
begin
|
||||||
@ -1507,6 +1634,18 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
function CreateMsgPort: PMsgPort;
|
||||||
|
begin
|
||||||
|
CreateMsgPort := CreatePort(nil, 0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure DeleteMsgPort(Port: PMsgPort);
|
||||||
|
begin
|
||||||
|
DeletePort(Port);
|
||||||
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
function CreateTask(Name: STRPTR; Pri: LongInt; InitPC: Pointer; StackSize: LongWord): PTask;
|
function CreateTask(Name: STRPTR; Pri: LongInt; InitPC: Pointer; StackSize: LongWord): PTask;
|
||||||
var
|
var
|
||||||
Memlist: PMemList;
|
Memlist: PMemList;
|
||||||
|
@ -4067,6 +4067,94 @@ CONST
|
|||||||
var
|
var
|
||||||
IntuitionBase: pIntuitionBase;
|
IntuitionBase: pIntuitionBase;
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
PROCEDURE ActivateWindow(window : pWindow location 'a0'); syscall _IntuitionBase 450;
|
||||||
|
PROCEDURE CloseWindow(window : pWindow location 'a0'); syscall _IntuitionBase 072;
|
||||||
|
FUNCTION ModifyIDCMP(window : pWindow location 'a0'; flags : ULONG location 'd0') : LongBool; syscall _IntuitionBase 150;
|
||||||
|
PROCEDURE MoveWindow(window : pWindow location 'a0'; dx : LONGINT location 'd0'; dy : LONGINT location 'd1'); syscall _IntuitionBase 168;
|
||||||
|
FUNCTION OpenWindow(const newWindow : pNewWindow location 'a0') : pWindow; syscall _IntuitionBase 204;
|
||||||
|
PROCEDURE RefreshWindowFrame(window : pWindow location 'a0'); syscall _IntuitionBase 456;
|
||||||
|
PROCEDURE SetWindowTitles(window : pWindow location 'a0';const windowTitle : pCHAR location 'a1';const screenTitle : pCHAR location 'a2'); syscall _IntuitionBase 276;
|
||||||
|
PROCEDURE SizeWindow(window : pWindow location 'a0'; dx : LONGINT location 'd0'; dy : LONGINT location 'd1'); syscall _IntuitionBase 288;
|
||||||
|
FUNCTION WindowLimits(window : pWindow location 'a0'; widthMin : LONGINT location 'd0'; heightMin : LONGINT location 'd1'; widthMax : ULONG location 'd2'; heightMax : ULONG location 'd3') : LongBool; syscall _IntuitionBase 318;
|
||||||
|
PROCEDURE WindowToBack(window : pWindow location 'a0'); syscall _IntuitionBase 306;
|
||||||
|
PROCEDURE WindowToFront(window : pWindow location 'a0'); syscall _IntuitionBase 312;
|
||||||
|
|
||||||
|
FUNCTION ActivateGadget(gadgets : pGadget location 'a0'; window : pWindow location 'a1'; requester : pRequester location 'a2') : LongBool syscall _IntuitionBase 462;
|
||||||
|
FUNCTION AddGadget(window : pWindow location 'a0'; gadget : pGadget location 'a1'; position : ULONG location 'd0') : WORD; syscall _IntuitionBase 042;
|
||||||
|
FUNCTION AddGList(window : pWindow location 'a0'; gadget : pGadget location 'a1'; position : ULONG location 'd0'; numGad : LONGINT location 'd1'; requester : pRequester location 'a2') : WORD; syscall _IntuitionBase 438;
|
||||||
|
PROCEDURE ModifyProp(gadget : pGadget location 'a0'; window : pWindow location 'a1'; requester : pRequester location 'a2'; flags : ULONG location 'd0'; horizPot : ULONG location 'd1'; vertPot : ULONG location 'd2'; horizBody : ULONG location 'd3'; vertBody : ULONG location 'd4'); syscall _IntuitionBase 156;
|
||||||
|
PROCEDURE NewModifyProp(gadget : pGadget location 'a0'; window : pWindow location 'a1'; requester : pRequester location 'a2'; flags : ULONG location 'd0'; horizPot : ULONG location 'd1'; vertPot : ULONG location 'd2'; horizBody : ULONG location 'd3'; vertBody : ULONG location 'd4'; numGad : LONGINT location 'd5'); syscall _IntuitionBase 468;
|
||||||
|
PROCEDURE OffGadget(gadget : pGadget location 'a0'; window : pWindow location 'a1'; requester : pRequester location 'a2'); syscall _IntuitionBase 174;
|
||||||
|
PROCEDURE OnGadget(gadget : pGadget location 'a0'; window : pWindow location 'a1'; requester : pRequester location 'a2'); syscall _IntuitionBase 186;
|
||||||
|
PROCEDURE RefreshGadgets(gadgets : pGadget location 'a0'; window : pWindow location 'a1'; requester : pRequester location 'a2'); syscall _IntuitionBase 222;
|
||||||
|
PROCEDURE RefreshGList(gadgets : pGadget location 'a0'; window : pWindow location 'a1'; requester : pRequester location 'a2'; numGad : LONGINT location 'd0'); syscall _IntuitionBase 432;
|
||||||
|
FUNCTION RemoveGadget(window : pWindow; gadget : pGadget) : WORD; syscall _IntuitionBase 228;
|
||||||
|
FUNCTION RemoveGList(remPtr : pWindow location 'a0'; gadget : pGadget location 'a1'; numGad : LONGINT location 'd0') : WORD; syscall _IntuitionBase 444;
|
||||||
|
|
||||||
|
PROCEDURE ClearMenuStrip(window : pWindow location 'a0'); syscall _IntuitionBase 054;
|
||||||
|
FUNCTION ItemAddress(const menuStrip : pMenu location 'a0'; menuNumber : ULONG location 'd0') : pMenuItem; syscall _IntuitionBase 144;
|
||||||
|
PROCEDURE OffMenu(window : pWindow location 'a0'; menuNumber : ULONG location 'd0'); syscall _IntuitionBase 180;
|
||||||
|
PROCEDURE OnMenu(window : pWindow location 'a0'; menuNumber : ULONG location 'd0'); syscall _IntuitionBase 192;
|
||||||
|
FUNCTION SetMenuStrip(window : pWindow location 'a0'; menu : pMenu location 'a1') : LongBool; syscall _IntuitionBase 264;
|
||||||
|
|
||||||
|
FUNCTION AutoRequest(window : pWindow location 'a0';const body : pIntuiText location 'a1';const posText : pIntuiText location 'a2';const negText : pIntuiText location 'a3'; pFlag : ULONG location 'd0'; nFlag : ULONG location 'd1'; width : ULONG location 'd2'; height : ULONG location 'd3') : LongBool; syscall _IntuitionBase 348;
|
||||||
|
FUNCTION BuildSysRequest(window : pWindow location 'a0';const body : pIntuiText location 'a1';const posText : pIntuiText location 'a2';const negText : pIntuiText location 'a3'; flags : ULONG location 'd0'; width : ULONG location 'd1'; height : ULONG location 'd2') : pWindow; syscall _IntuitionBase 360;
|
||||||
|
FUNCTION ClearDMRequest(window : pWindow location 'a0') : LongBool; syscall _IntuitionBase 048;
|
||||||
|
FUNCTION DisplayAlert(alertNumber : ULONG location 'd0';const string_ : pCHAR location 'a0'; height : ULONG location 'd1') : LongBool; syscall _IntuitionBase 090;
|
||||||
|
PROCEDURE EndRequest(requester : pRequester location 'a0'; window : pWindow location 'a1'); syscall _IntuitionBase 120;
|
||||||
|
PROCEDURE FreeSysRequest(window : pWindow location 'a0'); syscall _IntuitionBase 372;
|
||||||
|
PROCEDURE InitRequester(requester : pRequester location 'a0'); syscall _IntuitionBase 138;
|
||||||
|
FUNCTION Request(requester : pRequester location 'a0'; window : pWindow location 'a1') : LongBool; syscall _IntuitionBase 240;
|
||||||
|
FUNCTION SetDMRequest(window : pWindow location 'a0'; requester : pRequester location 'a1') : LongBool; syscall _IntuitionBase 258;
|
||||||
|
|
||||||
|
function CloseScreen(screen : pScreen location 'a0'): LongBool; syscall _IntuitionBase 066;
|
||||||
|
FUNCTION CloseWorkBench : LongBool; syscall _IntuitionBase 078;
|
||||||
|
PROCEDURE DisplayBeep(screen : pScreen location 'a0'); syscall _IntuitionBase 096;
|
||||||
|
FUNCTION GetScreenData(buffer : POINTER location 'a0'; size : ULONG location 'D0'; type_ : ULONG location 'd1';const screen : pScreen location 'a1') : LongBool; syscall _IntuitionBase 426;
|
||||||
|
FUNCTION MakeScreen(screen : pScreen location 'a0') : LONGINT; syscall _IntuitionBase 378;
|
||||||
|
PROCEDURE MoveScreen(screen : pScreen location 'a0'; dx : LONGINT location 'd0'; dy : LONGINT location 'd1'); syscall _IntuitionBase 162;
|
||||||
|
FUNCTION OpenScreen(const newScreen : pNewScreen location 'a0') : pScreen; syscall _IntuitionBase 198;
|
||||||
|
FUNCTION OpenWorkBench : ULONG; syscall _IntuitionBase 210;
|
||||||
|
PROCEDURE ScreenToBack(screen : pScreen location 'a0'); syscall _IntuitionBase 246;
|
||||||
|
PROCEDURE ScreenToFront(screen : pScreen location 'a0'); syscall _IntuitionBase 252;
|
||||||
|
PROCEDURE ShowTitle(screen : pScreen location 'a0'; showIt : LONGINT location 'd0'); syscall _IntuitionBase 282;
|
||||||
|
FUNCTION WBenchToBack : LongBool; syscall _IntuitionBase 336;
|
||||||
|
FUNCTION WBenchToFront : LongBool; syscall _IntuitionBase 342;
|
||||||
|
|
||||||
|
PROCEDURE ClearPointer(window : pWindow location 'a0'); syscall _IntuitionBase 060;
|
||||||
|
PROCEDURE DrawBorder(rp : pRastPort location 'a0';const border : pBorder location 'a1'; leftOffset : LONGINT location 'd0'; topOffset : LONGINT location 'd1'); syscall _IntuitionBase 108;
|
||||||
|
PROCEDURE DrawImage(rp : pRastPort location 'a0'; image : pImage location 'a1'; leftOffset : LONGINT location 'd0'; topOffset : LONGINT location 'd1'); syscall _IntuitionBase 114;
|
||||||
|
FUNCTION IntuiTextLength(const iText : pIntuiText location 'a0') : LONGINT; syscall _IntuitionBase 330;
|
||||||
|
PROCEDURE PrintIText(rp : pRastPort location 'a0';const iText : pIntuiText location 'a1'; left : LONGINT location 'd0'; top : LONGINT location 'd1'); syscall _IntuitionBase 216;
|
||||||
|
PROCEDURE SetPointer(window : pWindow location 'a0'; pointer_ : pword location 'a1'; height : LONGINT location 'd0'; width : LONGINT location 'd1'; xOffset : LONGINT location 'd2'; yOffset : LONGINT location 'd3'); syscall _IntuitionBase 270;
|
||||||
|
|
||||||
|
FUNCTION AllocRemember(var rememberKey : pRemember location 'a0'; size : ULONG location 'd0'; flags : ULONG location 'd1') : POINTER syscall _IntuitionBase 396;
|
||||||
|
PROCEDURE FreeRemember(VAR rememberKey : pRemember location 'a0'; reallyForget : LONGINT location 'd0'); syscall _IntuitionBase 408;
|
||||||
|
|
||||||
|
PROCEDURE BeginRefresh(window : pWindow location 'a0'); syscall _IntuitionBase 354;
|
||||||
|
PROCEDURE EndRefresh(window : pWindow location 'a0'; complete : LONGBOOL location 'd0'); syscall _IntuitionBase 366;
|
||||||
|
FUNCTION RemakeDisplay : LONGINT; syscall _IntuitionBase 384;
|
||||||
|
FUNCTION RethinkDisplay : LONGINT; syscall _IntuitionBase 390;
|
||||||
|
|
||||||
|
FUNCTION LockIBase(dontknow : ULONG location 'd0') : ULONG; syscall _IntuitionBase 414;
|
||||||
|
PROCEDURE UnlockIBase(ibLock : ULONG location 'a0'); syscall _IntuitionBase 420;
|
||||||
|
FUNCTION ViewAddress : pView; syscall _IntuitionBase 294;
|
||||||
|
FUNCTION ViewPortAddress(const window : pWindow location 'a0') : pViewPort; syscall _IntuitionBase 300;
|
||||||
|
|
||||||
|
PROCEDURE CurrentTime(VAR seconds : ULONG location 'a0'; VAR micros : ULONG location 'a1'); syscall _IntuitionBase 084;
|
||||||
|
FUNCTION DoubleClick(sSeconds : ULONG location 'd0'; sMicros : ULONG location 'd1'; cSeconds : ULONG location 'd2'; cMicros : ULONG location 'd3') : LongBool; syscall _IntuitionBase 102;
|
||||||
|
FUNCTION GetDefPrefs(preferences : pPreferences location 'a0'; size : LONGINT location 'd0') : pPreferences; syscall _IntuitionBase 126;
|
||||||
|
FUNCTION GetPrefs(preferences : pPreferences location 'a0'; size : LONGINT location 'd0') : pPreferences; syscall _IntuitionBase 132;
|
||||||
|
PROCEDURE ReportMouse(flag : LONGINT location 'd0'; window : pWindow location 'a0'); syscall _IntuitionBase 234;
|
||||||
|
FUNCTION SetPrefs(const preferences : pPreferences location 'a0'; size : LONGINT location 'd0'; inform : LONGINT location 'd1') : pPreferences; syscall _IntuitionBase 324;
|
||||||
|
|
||||||
|
function OpenWindowTagList(NewWindow: PNewWindow; TagList: PTagItem):PWindow;
|
||||||
|
function OpenScreenTagList(NewScreen: PNewScreen; TagList: PTagItem): PScreen;
|
||||||
|
function EasyRequestArgs(Window: PWindow; const EasyStruct: PEasyStruct; IDCMPPtr: PLongWord; const Args: Pointer): LongInt;
|
||||||
|
|
||||||
|
|
||||||
|
{$else}
|
||||||
FUNCTION ActivateGadget(gadgets : pGadget location 'a0'; window : pWindow location 'a1'; requester : pRequester location 'a2') : LongBool syscall _IntuitionBase 462;
|
FUNCTION ActivateGadget(gadgets : pGadget location 'a0'; window : pWindow location 'a1'; requester : pRequester location 'a2') : LongBool syscall _IntuitionBase 462;
|
||||||
PROCEDURE ActivateWindow(window : pWindow location 'a0'); syscall _IntuitionBase 450;
|
PROCEDURE ActivateWindow(window : pWindow location 'a0'); syscall _IntuitionBase 450;
|
||||||
PROCEDURE AddClass(classPtr : pIClass location 'a0'); syscall _IntuitionBase 684;
|
PROCEDURE AddClass(classPtr : pIClass location 'a0'); syscall _IntuitionBase 684;
|
||||||
@ -4189,24 +4277,29 @@ FUNCTION WindowLimits(window : pWindow location 'a0'; widthMin : LONGINT locatio
|
|||||||
PROCEDURE WindowToBack(window : pWindow location 'a0'); syscall _IntuitionBase 306;
|
PROCEDURE WindowToBack(window : pWindow location 'a0'); syscall _IntuitionBase 306;
|
||||||
PROCEDURE WindowToFront(window : pWindow location 'a0'); syscall _IntuitionBase 312;
|
PROCEDURE WindowToFront(window : pWindow location 'a0'); syscall _IntuitionBase 312;
|
||||||
PROCEDURE ZipWindow(window : pWindow location 'a0'); syscall _IntuitionBase 504;
|
PROCEDURE ZipWindow(window : pWindow location 'a0'); syscall _IntuitionBase 504;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
function OpenScreenTags(newScreen : pNewScreen; tagList : array of PtrUInt) : pScreen;
|
function OpenScreenTags(newScreen : pNewScreen; tagList : array of PtrUInt) : pScreen;
|
||||||
function OpenWindowTags(newWindow : pNewWindow; tagList : array of PtrUInt) : pWindow;
|
function OpenWindowTags(newWindow : pNewWindow; tagList : array of PtrUInt) : pWindow;
|
||||||
|
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
|
function NewObject(classPtr : pIClass; classID : string; Const argv : array of PtrUInt ) : POINTER;
|
||||||
function NewObject(classPtr : pIClass; classID : pCHAR; Const argv : array of PtrUInt) : POINTER;
|
function NewObject(classPtr : pIClass; classID : pCHAR; Const argv : array of PtrUInt) : POINTER;
|
||||||
function SetAttrs(obj : POINTER; tags: array of DWord) : ULONG;
|
function SetAttrs(obj : POINTER; tags: array of DWord) : ULONG;
|
||||||
function SetGadgetAttrs(gadget : pGadget; window : pWindow; requester : pRequester; Const argv : array of PtrUInt) : ULONG;
|
function SetGadgetAttrs(gadget : pGadget; window : pWindow; requester : pRequester; Const argv : array of PtrUInt) : ULONG;
|
||||||
function NewObject(classPtr : pIClass; classID : string; Const argv : array of PtrUInt ) : POINTER;
|
|
||||||
function EasyRequest(window : pWindow;const easyStruct : pEasyStruct; idcmpPtr : pULONG; args : array of DWord) : LONGINT;
|
|
||||||
procedure SetWindowPointer(win : pWindow; tags: array of DWord);
|
procedure SetWindowPointer(win : pWindow; tags: array of DWord);
|
||||||
|
{$endif}
|
||||||
|
function EasyRequest(window : pWindow;const easyStruct : pEasyStruct; idcmpPtr : pULONG; args : array of DWord) : LONGINT;
|
||||||
|
|
||||||
{ Intuition macros }
|
{ Intuition macros }
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
function INST_DATA (cl: pIClass; o: p_Object): Pointer;
|
function INST_DATA (cl: pIClass; o: p_Object): Pointer;
|
||||||
function SIZEOF_INSTANCE (cl: pIClass): Longint;
|
function SIZEOF_INSTANCE (cl: pIClass): Longint;
|
||||||
function BASEOBJECT (o: p_Object): Pointer;
|
function BASEOBJECT (o: p_Object): Pointer;
|
||||||
function _OBJ(o: p_Object): p_Object; inline;
|
function _OBJ(o: p_Object): p_Object; inline;
|
||||||
function __OBJECT (o: Pointer): p_Object; inline;
|
function __OBJECT (o: Pointer): p_Object; inline;
|
||||||
function OCLASS (o: Pointer): pIClass; inline;
|
function OCLASS (o: Pointer): pIClass; inline;
|
||||||
|
{$endif}
|
||||||
function SHIFTITEM (n: smallint): word;
|
function SHIFTITEM (n: smallint): word;
|
||||||
function SHIFTMENU (n: smallint): word;
|
function SHIFTMENU (n: smallint): word;
|
||||||
function SHIFTSUB (n: smallint): word;
|
function SHIFTSUB (n: smallint): word;
|
||||||
@ -4222,14 +4315,17 @@ function SUBNUM( n : Word): Word;
|
|||||||
|
|
||||||
FUNCTION DisplayAlert(alertNumber : ULONG;const string_ : string; height : ULONG) : BOOLEAN;
|
FUNCTION DisplayAlert(alertNumber : ULONG;const string_ : string; height : ULONG) : BOOLEAN;
|
||||||
FUNCTION LockPubScreen(const name : string) : pScreen;
|
FUNCTION LockPubScreen(const name : string) : pScreen;
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
FUNCTION MakeClass(const classID : string;const superClassID : pCHAR;const superClassPtr : pIClass; instanceSize : ULONG; flags : ULONG) : pIClass;
|
FUNCTION MakeClass(const classID : string;const superClassID : pCHAR;const superClassPtr : pIClass; instanceSize : ULONG; flags : ULONG) : pIClass;
|
||||||
FUNCTION MakeClass(const classID : pCHAR;const superClassID : string;const superClassPtr : pIClass; instanceSize : ULONG; flags : ULONG) : pIClass;
|
FUNCTION MakeClass(const classID : pCHAR;const superClassID : string;const superClassPtr : pIClass; instanceSize : ULONG; flags : ULONG) : pIClass;
|
||||||
FUNCTION MakeClass(const classID : string;const superClassID : string;const superClassPtr : pIClass; instanceSize : ULONG; flags : ULONG) : pIClass;
|
FUNCTION MakeClass(const classID : string;const superClassID : string;const superClassPtr : pIClass; instanceSize : ULONG; flags : ULONG) : pIClass;
|
||||||
FUNCTION NewObjectA(classPtr : pIClass;const classID : string;const tagList : pTagItem) : POINTER;
|
FUNCTION NewObjectA(classPtr : pIClass;const classID : string;const tagList : pTagItem) : POINTER;
|
||||||
|
{$endif}
|
||||||
PROCEDURE SetDefaultPubScreen(const name : string);
|
PROCEDURE SetDefaultPubScreen(const name : string);
|
||||||
FUNCTION TimedDisplayAlert(alertNumber : ULONG;const string_ : string; height : ULONG; time : ULONG) : BOOLEAN;
|
FUNCTION TimedDisplayAlert(alertNumber : ULONG;const string_ : string; height : ULONG; time : ULONG) : BOOLEAN;
|
||||||
PROCEDURE UnlockPubScreen(const name : string; screen : pScreen);
|
PROCEDURE UnlockPubScreen(const name : string; screen : pScreen);
|
||||||
|
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
function DoMethodA(Obj: PObject_; Msg: APTR): PtrUInt;
|
function DoMethodA(Obj: PObject_; Msg: APTR): PtrUInt;
|
||||||
function DoSuperMethodA(Cl: PIClass; Obj: PObject_; Msg: APTR): PtrUInt;
|
function DoSuperMethodA(Cl: PIClass; Obj: PObject_; Msg: APTR): PtrUInt;
|
||||||
function CoerceMethodA(Cl: PIClass; Obj: PObject_; Msg: APTR): PtrUInt;
|
function CoerceMethodA(Cl: PIClass; Obj: PObject_; Msg: APTR): PtrUInt;
|
||||||
@ -4237,9 +4333,265 @@ function SetSuperAttrsA(Cl: PIClass; Obj: PObject_; Msg : APTR): PtrUInt;
|
|||||||
|
|
||||||
function DoMethod(Obj: PObject_; Params: array of PtrUInt): LongWord; inline;
|
function DoMethod(Obj: PObject_; Params: array of PtrUInt): LongWord; inline;
|
||||||
function DoSuperMethod(Cl: PIClass; Obj: PObject_; const Params: array of PtrUInt): PtrUInt; inline;
|
function DoSuperMethod(Cl: PIClass; Obj: PObject_; const Params: array of PtrUInt): PtrUInt; inline;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
IMPLEMENTATION
|
IMPLEMENTATION
|
||||||
|
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
function OpenWindowTagList(NewWindow: PNewWindow; TagList: PTagItem):PWindow;
|
||||||
|
var
|
||||||
|
Nw: TNewWindow;
|
||||||
|
Scr: PScreen;
|
||||||
|
LockedScreenName: PChar;
|
||||||
|
ScreenTitle: PChar;
|
||||||
|
Win: PWindow;
|
||||||
|
ILock: LongWord;
|
||||||
|
begin
|
||||||
|
if not Assigned(NewWindow) then
|
||||||
|
begin
|
||||||
|
NewWindow := @Nw;
|
||||||
|
FillChar(Nw, SizeOf(Nw), 0);
|
||||||
|
NW.LeftEdge := 20;
|
||||||
|
NW.TopEdge := 20;
|
||||||
|
NW.Width := 200;
|
||||||
|
NW.Height := 100;
|
||||||
|
Nw.DetailPen := 0;
|
||||||
|
Nw.BlockPen := 1;
|
||||||
|
nw.MaxWidth := 640;
|
||||||
|
nw.MaxHeight := 512;
|
||||||
|
nw.WType := WBENCHSCREEN_F;
|
||||||
|
end;
|
||||||
|
LockedScreenName := nil;
|
||||||
|
ScreenTitle := nil;
|
||||||
|
//
|
||||||
|
while TagList <> nil do
|
||||||
|
begin
|
||||||
|
case TagList^.ti_Tag of
|
||||||
|
WA_Flags: NewWindow^.Flags := NewWindow^.Flags or TagList^.ti_Data;
|
||||||
|
WA_Gadgets: NewWindow^.FirstGadget := Pointer(TagList^.ti_Data);
|
||||||
|
WA_GimmeZeroZero: NewWindow^.Flags := NewWindow^.Flags or WFLG_GIMMEZEROZERO;
|
||||||
|
WA_InnerHeight,WA_Height: NewWindow^.Height := TagList^.ti_Data;
|
||||||
|
WA_IDCMP: NewWindow^.IDCMPFlags := NewWindow^.IDCMPFlags or TagList^.ti_Data;
|
||||||
|
WA_Left: NewWindow^.LeftEdge := TagList^.ti_Data;
|
||||||
|
WA_MaxHeight: NewWindow^.MaxHeight := TagList^.ti_Data;
|
||||||
|
WA_MaxWidth: NewWindow^.MaxWidth := TagList^.ti_Data;
|
||||||
|
WA_MinHeight: NewWindow^.MinHeight := TagList^.ti_Data;
|
||||||
|
WA_MinWidth: NewWindow^.MinWidth := TagList^.ti_Data;
|
||||||
|
WA_NoCareRefresh: NewWindow^.Flags := NewWindow^.Flags or WFLG_NOCAREREFRESH;
|
||||||
|
WA_PubScreen: NewWindow^.Screen := Pointer(TagList^.ti_Data);
|
||||||
|
WA_PubScreenName:
|
||||||
|
begin
|
||||||
|
ILock := LockIBase(0);
|
||||||
|
LockedScreenName := PChar(TagList^.ti_Data);
|
||||||
|
if (LowerCase(string(LockedScreenName)) = 'workbench') or (LockedScreenName = nil) then
|
||||||
|
begin
|
||||||
|
NewWindow^.WType := WBENCHSCREEN_F;
|
||||||
|
NewWindow^.Screen := nil;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Scr := pIntuitionBase(_IntuitionBase)^.FirstScreen;
|
||||||
|
while Assigned(Scr) do
|
||||||
|
begin
|
||||||
|
if LowerCase(string(scr^.Title)) = LowerCase(string(LockedScreenName)) then
|
||||||
|
begin
|
||||||
|
NewWindow^.Screen := Scr;
|
||||||
|
NewWindow^.WType := CUSTOMSCREEN_F;
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
Scr := Scr^.NextScreen
|
||||||
|
end;
|
||||||
|
UnlockIBase(ILock);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
WA_ReportMouse: NewWindow^.Flags := NewWindow^.Flags or WFLG_REPORTMOUSE;
|
||||||
|
WA_RMBTrap: NewWindow^.Flags := NewWindow^.Flags or WFLG_RMBTRAP;
|
||||||
|
WA_ScreenTitle: ScreenTitle := PChar(TagList^.ti_Data);
|
||||||
|
WA_SimpleRefresh: NewWindow^.Flags := NewWindow^.Flags or WFLG_SIMPLE_REFRESH;
|
||||||
|
WA_SizeBBottom: NewWindow^.Flags := NewWindow^.Flags or WFLG_SIZEBBOTTOM;
|
||||||
|
WA_SizeBRight: NewWindow^.Flags := NewWindow^.Flags or WFLG_SIZEBRIGHT;
|
||||||
|
WA_SizeGadget: NewWindow^.Flags := NewWindow^.Flags or WFLG_SIZEGADGET;
|
||||||
|
WA_SmartRefresh: NewWindow^.Flags := NewWindow^.Flags or WFLG_SMART_REFRESH;
|
||||||
|
WA_SuperBitMap: NewWindow^.BitMap := Pointer(TagList^.ti_Data);
|
||||||
|
WA_Title: NewWindow^.Title := PChar(TagList^.ti_Data);
|
||||||
|
WA_Top: NewWindow^.TopEdge := TagList^.ti_Data;
|
||||||
|
WA_InnerWidth,WA_Width: NewWindow^.Width := TagList^.ti_Data;
|
||||||
|
end;
|
||||||
|
TagList := NextTagItem(TagList);
|
||||||
|
end;
|
||||||
|
Win := OpenWindow(NewWindow);
|
||||||
|
if Assigned(Win) and Assigned(ScreenTitle) then
|
||||||
|
SetWindowTitles(Win, NewWindow^.Title, ScreenTitle);
|
||||||
|
OpenWindowTagList := Win;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function OpenScreenTagList(NewScreen: PNewScreen; TagList: PTagItem): PScreen;
|
||||||
|
var
|
||||||
|
Scr: PScreen;
|
||||||
|
Ns: TNewScreen;
|
||||||
|
ILock: LongWord;
|
||||||
|
STagList: PTagItem;
|
||||||
|
begin
|
||||||
|
OpenScreenTagList := nil;
|
||||||
|
if not Assigned(NewScreen) then
|
||||||
|
begin
|
||||||
|
NewScreen := @Ns;
|
||||||
|
FillChar(Ns, SizeOf(Ns), 0);
|
||||||
|
Ns.LeftEdge := 0;
|
||||||
|
Ns.TopEdge := 0;
|
||||||
|
Ns.Width := 320;
|
||||||
|
Ns.Height := 200;
|
||||||
|
Ns.DetailPen := 0;
|
||||||
|
Ns.BlockPen := 1;
|
||||||
|
Ns.Depth := 1;
|
||||||
|
Ns.ViewModes := 0;
|
||||||
|
end;
|
||||||
|
// SEarch for Like Workbench
|
||||||
|
STagList := TagList;
|
||||||
|
while STagList <> nil do
|
||||||
|
begin
|
||||||
|
if STagList^.ti_Tag = SA_LikeWorkbench then
|
||||||
|
begin
|
||||||
|
ILock := LockIBase(0);
|
||||||
|
Scr := PIntuitionBase(_IntuitionBase)^.FirstScreen;
|
||||||
|
if Assigned(Scr) then
|
||||||
|
begin
|
||||||
|
NewScreen^.LeftEdge := Scr^.LeftEdge;
|
||||||
|
NewScreen^.TopEdge := Scr^.TopEdge;
|
||||||
|
NewScreen^.Width := Scr^.Width;
|
||||||
|
NewScreen^.Height := Scr^.Height;
|
||||||
|
NewScreen^.Font := Scr^.Font;
|
||||||
|
NewScreen^.Depth := Scr^.BitMap.Depth;
|
||||||
|
NewScreen^.DetailPen := Scr^.DetailPen;
|
||||||
|
NewScreen^.BlockPen := Scr^.BlockPen;
|
||||||
|
NewScreen^.ViewModes := Scr^.ViewPort.Modes;
|
||||||
|
NewScreen^.SType := Scr^.Flags; // not sure if that is correct
|
||||||
|
end;
|
||||||
|
UnlockIBase(ILock);
|
||||||
|
end;
|
||||||
|
STagList := NextTagItem(STagList);
|
||||||
|
end;
|
||||||
|
// check the other tags
|
||||||
|
while TagList <> nil do
|
||||||
|
begin
|
||||||
|
case TagList^.ti_Tag of
|
||||||
|
SA_AutoScroll: if TagList^.ti_Data <> 0 then NewScreen^.SType := NewScreen^.SType or AUTOSCROLL else NewScreen^.SType := NewScreen^.SType and not AUTOSCROLL;
|
||||||
|
SA_Behind: if TagList^.ti_Data <> 0 then NewScreen^.SType := NewScreen^.SType or SCREENBEHIND_F else NewScreen^.SType := NewScreen^.SType and not SCREENBEHIND_F;
|
||||||
|
SA_BitMap: begin NewScreen^.SType := NewScreen^.SType or CUSTOMBITMAP_F; NewScreen^.CustomBitMap := Pointer(TagList^.ti_Data); end;
|
||||||
|
SA_BlockPen: NewScreen^.BlockPen := TagList^.ti_Data;
|
||||||
|
//SA_ColorMapEntries: TODO:
|
||||||
|
//SA_Colors: todo: after
|
||||||
|
//SA_Colors32: todo: after
|
||||||
|
SA_Depth: NewScreen^.Depth := TagList^.ti_Data;
|
||||||
|
SA_DetailPen: NewScreen^.DetailPen := TagList^.ti_Data;
|
||||||
|
SA_Font: NewScreen^.Font := Pointer(TagList^.ti_Data);
|
||||||
|
//SA_FullPalette: TODO:
|
||||||
|
//SA_Pens: TODO:
|
||||||
|
SA_Height: NewScreen^.Height := TagList^.ti_Data;
|
||||||
|
SA_Left: NewScreen^.LeftEdge := TagList^.ti_Data;
|
||||||
|
//SA_PubName: TODO: hmmm, not really possible
|
||||||
|
SA_Quiet: if TagList^.ti_Data <> 0 then NewScreen^.SType := NewScreen^.SType or SCREENQUIET_F else NewScreen^.SType := NewScreen^.SType and not SCREENQUIET_F;
|
||||||
|
SA_ShowTitle: if TagList^.ti_Data <> 0 then NewScreen^.SType := NewScreen^.SType or SHOWTITLE_F else NewScreen^.SType := NewScreen^.SType and not SHOWTITLE_F;
|
||||||
|
SA_Title: NewScreen^.DefaultTitle := PChar(TagList^.ti_Data);
|
||||||
|
SA_Top: NewScreen^.TopEdge := TagList^.ti_Data;
|
||||||
|
SA_Type: NewScreen^.SType := NewScreen^.SType or (TagList^.ti_Data) and not PUBLICSCREEN_F;
|
||||||
|
SA_DisplayID: NewScreen^.ViewModes := TagList^.ti_Data;
|
||||||
|
SA_Width: NewScreen^.Width := TagList^.ti_Data;
|
||||||
|
end;
|
||||||
|
TagList := NextTagItem(TagList);
|
||||||
|
end;
|
||||||
|
Scr := OpenScreen(NewScreen);
|
||||||
|
OpenScreenTagList := Scr;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function EasyRequestArgs(Window: PWindow; const EasyStruct: PEasyStruct; IDCMPPtr: PLongWord; const Args: Pointer): LongInt;
|
||||||
|
var
|
||||||
|
Body, PosText, NegText: TIntuiText;
|
||||||
|
pFlags, nFlags, Width, Height: LongWord;
|
||||||
|
pText, NText, s: AnsiString;
|
||||||
|
Found: Boolean;
|
||||||
|
i: Integer;
|
||||||
|
Target: array[0..255] of Char;
|
||||||
|
Magic: LongWord;
|
||||||
|
begin
|
||||||
|
Magic := $16c04e75; // move.b d0,(a3)+ rts
|
||||||
|
RawDoFmt(easyStruct^.es_TextFormat, args, TProcedure(@Magic), @Target[0]);
|
||||||
|
with Body do
|
||||||
|
begin
|
||||||
|
BackPen := 1;
|
||||||
|
FrontPen := 2;
|
||||||
|
DrawMode := JAM1;
|
||||||
|
IText := @Target[0];
|
||||||
|
LeftEdge := 17;
|
||||||
|
TopEdge := 20;
|
||||||
|
ITextFont := nil;
|
||||||
|
NextText := nil;
|
||||||
|
end;
|
||||||
|
//
|
||||||
|
NText := '';
|
||||||
|
PText := '';
|
||||||
|
if Assigned(easyStruct^.es_GadgetFormat) then
|
||||||
|
begin
|
||||||
|
s := string(easyStruct^.es_GadgetFormat);
|
||||||
|
Found := False;
|
||||||
|
for i := 1 to Length(s) do
|
||||||
|
begin
|
||||||
|
if not Found and (s[i] = '|') then
|
||||||
|
Found := True
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if Found then
|
||||||
|
NText := NText + s[i]
|
||||||
|
else
|
||||||
|
PText := PText + s[i];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if (PText = '') and (NText = '') then
|
||||||
|
PText := 'Ok';
|
||||||
|
|
||||||
|
with PosText do
|
||||||
|
begin
|
||||||
|
BackPen := 1;
|
||||||
|
FrontPen := 2;
|
||||||
|
DrawMode := JAM1;
|
||||||
|
IText := PChar(PText);
|
||||||
|
LeftEdge := 7;
|
||||||
|
TopEdge := 4;
|
||||||
|
ITextFont := nil;
|
||||||
|
NextText := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
with NegText do
|
||||||
|
begin
|
||||||
|
BackPen := 1;
|
||||||
|
FrontPen := 2;
|
||||||
|
DrawMode := JAM1;
|
||||||
|
IText := PChar(NText);
|
||||||
|
LeftEdge := 7;
|
||||||
|
TopEdge := 4;
|
||||||
|
ITextFont := nil;
|
||||||
|
NextText := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Width := IntuiTextLength(@Body) + 50;
|
||||||
|
Height := 70;
|
||||||
|
if idcmpPtr <> nil then
|
||||||
|
pFlags := idcmpPtr^
|
||||||
|
else
|
||||||
|
pFlags := 0;
|
||||||
|
NFlags := 0;
|
||||||
|
|
||||||
|
if AutoRequest(Window, @Body, @PosText, @NegText, pFlags, nFlags, Width, Height) then
|
||||||
|
EasyRequestArgs := 1
|
||||||
|
else
|
||||||
|
EasyRequestArgs := 0;
|
||||||
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
function OpenScreenTags(newScreen : pNewScreen; tagList : array of PtrUInt) : pScreen;
|
function OpenScreenTags(newScreen : pNewScreen; tagList : array of PtrUInt) : pScreen;
|
||||||
begin
|
begin
|
||||||
OpenScreenTags := OpenScreenTagList(newScreen, @tagList);
|
OpenScreenTags := OpenScreenTagList(newScreen, @tagList);
|
||||||
@ -4250,6 +4602,7 @@ begin
|
|||||||
OpenWindowTags := OpenWindowTagList(newWindow, @tagList);
|
OpenWindowTags := OpenWindowTagList(newWindow, @tagList);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
function NewObject(classPtr : pIClass; classID : pCHAR; Const argv : array of PtrUInt) : POINTER;
|
function NewObject(classPtr : pIClass; classID : pCHAR; Const argv : array of PtrUInt) : POINTER;
|
||||||
begin
|
begin
|
||||||
NewObject := NewObjectA(classPtr,classID, @argv);
|
NewObject := NewObjectA(classPtr,classID, @argv);
|
||||||
@ -4270,16 +4623,19 @@ begin
|
|||||||
SetGadgetAttrs := SetGadgetAttrsA(gadget,window,requester,@argv);
|
SetGadgetAttrs := SetGadgetAttrsA(gadget,window,requester,@argv);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure SetWindowPointer(win : pWindow; tags: array of DWord);
|
||||||
|
begin
|
||||||
|
SetWindowPointerA(win, @tags);
|
||||||
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
function EasyRequest(window : pWindow;const easyStruct : pEasyStruct; idcmpPtr : pULONG; args : array of DWord) : LONGINT;
|
function EasyRequest(window : pWindow;const easyStruct : pEasyStruct; idcmpPtr : pULONG; args : array of DWord) : LONGINT;
|
||||||
begin
|
begin
|
||||||
EasyRequest := EasyRequestArgs(window, easystruct, idcmpptr, @args);
|
EasyRequest := EasyRequestArgs(window, easystruct, idcmpptr, @args);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure SetWindowPointer(win : pWindow; tags: array of DWord);
|
|
||||||
begin
|
|
||||||
SetWindowPointerA(win, @tags);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
function INST_DATA (cl: pIClass; o: p_Object): Pointer; inline;
|
function INST_DATA (cl: pIClass; o: p_Object): Pointer; inline;
|
||||||
begin
|
begin
|
||||||
INST_DATA := Pointer(Longint(o) + cl^.cl_InstOffset);
|
INST_DATA := Pointer(Longint(o) + cl^.cl_InstOffset);
|
||||||
@ -4309,6 +4665,7 @@ function OCLASS (o: Pointer): pIClass; inline;
|
|||||||
begin
|
begin
|
||||||
OCLASS := p_Object(o - sizeof(t_Object))^.o_Class;
|
OCLASS := p_Object(o - sizeof(t_Object))^.o_Class;
|
||||||
end;
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
function SHIFTITEM (n: smallint): word; inline;
|
function SHIFTITEM (n: smallint): word; inline;
|
||||||
begin
|
begin
|
||||||
@ -4389,6 +4746,7 @@ begin
|
|||||||
LockPubScreen := LockPubScreen(PChar(RawByteString(name)));
|
LockPubScreen := LockPubScreen(PChar(RawByteString(name)));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
FUNCTION MakeClass(const classID : string;const superClassID : pCHAR;const superClassPtr : pIClass; instanceSize : ULONG; flags : ULONG) : pIClass;
|
FUNCTION MakeClass(const classID : string;const superClassID : pCHAR;const superClassPtr : pIClass; instanceSize : ULONG; flags : ULONG) : pIClass;
|
||||||
begin
|
begin
|
||||||
MakeClass := MakeClass(PChar(RawByteString(classID)),superClassID,superClassPtr,instanceSize,flags);
|
MakeClass := MakeClass(PChar(RawByteString(classID)),superClassID,superClassPtr,instanceSize,flags);
|
||||||
@ -4408,6 +4766,7 @@ FUNCTION NewObjectA(classPtr : pIClass;const classID : string;const tagList : pT
|
|||||||
begin
|
begin
|
||||||
NewObjectA := NewObjectA(classPtr,PChar(RawByteString(classID)),taglist);
|
NewObjectA := NewObjectA(classPtr,PChar(RawByteString(classID)),taglist);
|
||||||
end;
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
PROCEDURE SetDefaultPubScreen(const name : string);
|
PROCEDURE SetDefaultPubScreen(const name : string);
|
||||||
begin
|
begin
|
||||||
@ -4424,7 +4783,7 @@ begin
|
|||||||
UnlockPubScreen(PChar(RawByteString(name)),screen);
|
UnlockPubScreen(PChar(RawByteString(name)),screen);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
function DoMethodA(Obj: PObject_; Msg: APTR): PtrUInt;
|
function DoMethodA(Obj: PObject_; Msg: APTR): PtrUInt;
|
||||||
begin
|
begin
|
||||||
if Assigned(Obj) then
|
if Assigned(Obj) then
|
||||||
@ -4470,6 +4829,7 @@ begin
|
|||||||
arr[2] := 0;
|
arr[2] := 0;
|
||||||
SetSuperAttrsA := DoSuperMethodA(Cl, Obj, @arr);
|
SetSuperAttrsA := DoSuperMethodA(Cl, Obj, @arr);
|
||||||
end;
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
IntuitionBase := pIntuitionBase(_IntuitionBase);
|
IntuitionBase := pIntuitionBase(_IntuitionBase);
|
||||||
|
@ -110,13 +110,58 @@ VAR KeymapBase : pLibrary = nil;
|
|||||||
const
|
const
|
||||||
KEYMAPNAME : PChar = 'keymap.library';
|
KEYMAPNAME : PChar = 'keymap.library';
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
function MapRawKey(event: PInputEvent; Buffer: PCHAR; Length: LongInt; keyMap: PKeyMap): SmallInt;
|
||||||
|
{$else}
|
||||||
FUNCTION AskKeyMapDefault : pKeyMap; syscall KeymapBase 036;
|
FUNCTION AskKeyMapDefault : pKeyMap; syscall KeymapBase 036;
|
||||||
FUNCTION MapANSI(thestring : pCHAR location 'a0'; count : LONGINT location 'd0'; buffer : pCHAR location 'a1'; length : LONGINT location 'd1'; keyMap : pKeyMap location 'a2') : LONGINT; syscall KeymapBase 048;
|
FUNCTION MapANSI(thestring : pCHAR location 'a0'; count : LONGINT location 'd0'; buffer : pCHAR location 'a1'; length : LONGINT location 'd1'; keyMap : pKeyMap location 'a2') : LONGINT; syscall KeymapBase 048;
|
||||||
FUNCTION MapRawKey(event : pInputEvent location 'a0'; buffer : pCHAR location 'a1'; length : LONGINT location 'd1'; keyMap : pKeyMap location 'a2') : smallint; syscall KeymapBase 042;
|
FUNCTION MapRawKey(event : pInputEvent location 'a0'; buffer : pCHAR location 'a1'; length : LONGINT location 'd1'; keyMap : pKeyMap location 'a2') : smallint; syscall KeymapBase 042;
|
||||||
PROCEDURE SetKeyMapDefault(keyMap : pKeyMap location 'a0'); syscall KeymapBase 030;
|
PROCEDURE SetKeyMapDefault(keyMap : pKeyMap location 'a0'); syscall KeymapBase 030;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
IMPLEMENTATION
|
IMPLEMENTATION
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
var
|
||||||
|
ConDev: PDevice = nil;
|
||||||
|
ConMsgPort: PMsgPort = nil;
|
||||||
|
ConIOReq: PIORequest = nil;
|
||||||
|
|
||||||
|
function RawKeyConvert(Events: PInputEvent location 'a0'; Buffer: PCHAR location 'a1'; Length: LongInt location 'd1'; KeyMap: PKeyMap location 'a2'): LongInt; syscall ConDev 048;
|
||||||
|
|
||||||
|
function MapRawKey(event: PInputEvent; Buffer: PCHAR; Length: LongInt; keyMap: PKeyMap): SmallInt;
|
||||||
|
begin
|
||||||
|
if not Assigned(ConDev) then
|
||||||
|
begin
|
||||||
|
ConMsgPort := CreatePort(nil, 0);
|
||||||
|
ConIOReq := CreateExtIO(ConMsgPort, SizeOf(TIOStdReq));
|
||||||
|
|
||||||
|
OpenDevice('console.device', -1, ConIOReq, 0);
|
||||||
|
|
||||||
|
ConDev := ConIOReq^.io_Device;
|
||||||
|
end;
|
||||||
|
if Assigned(ConDev) then
|
||||||
|
MapRawKey := RawKeyConvert(event, Buffer, length, keymap)
|
||||||
|
else
|
||||||
|
MapRawKey := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure CloseKeyMapConsole;
|
||||||
|
begin
|
||||||
|
if Assigned(ConDev) and Assigned(ConIOReq) then
|
||||||
|
begin
|
||||||
|
CloseDevice(ConIOReq);
|
||||||
|
DeleteExtIO(ConIOReq);
|
||||||
|
end;
|
||||||
|
ConDev := nil;
|
||||||
|
ConIOReq := nil;
|
||||||
|
if Assigned(ConMsgPort) then
|
||||||
|
DeletePort(ConMsgPort);
|
||||||
|
ConMsgPort := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$endif}
|
||||||
|
|
||||||
const
|
const
|
||||||
{ Change VERSION and LIBVERSION to proper values }
|
{ Change VERSION and LIBVERSION to proper values }
|
||||||
VERSION : string[2] = '0';
|
VERSION : string[2] = '0';
|
||||||
@ -127,6 +172,9 @@ initialization
|
|||||||
finalization
|
finalization
|
||||||
if Assigned(KeymapBase) then
|
if Assigned(KeymapBase) then
|
||||||
CloseLibrary(KeymapBase);
|
CloseLibrary(KeymapBase);
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
CloseKeyMapConsole;
|
||||||
|
{$endif}
|
||||||
END. (* UNIT KEYMAP *)
|
END. (* UNIT KEYMAP *)
|
||||||
|
|
||||||
|
|
||||||
|
@ -339,6 +339,11 @@ Type
|
|||||||
var
|
var
|
||||||
UtilityBase: pUtilityBase;
|
UtilityBase: pUtilityBase;
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
function NextTagItem(var Item: PTagItem): PTagItem; inline;
|
||||||
|
|
||||||
|
{$else}
|
||||||
|
|
||||||
function AddNamedObject(nameSpace : pNamedObject location 'a0';obj : pNamedObject location 'a1') : LongBool; syscall _UtilityBase 222;
|
function AddNamedObject(nameSpace : pNamedObject location 'a0';obj : pNamedObject location 'a1') : LongBool; syscall _UtilityBase 222;
|
||||||
function AllocateTagItems(num : ULONG location 'd0') : pTagItem; syscall _UtilityBase 066;
|
function AllocateTagItems(num : ULONG location 'd0') : pTagItem; syscall _UtilityBase 066;
|
||||||
function AllocNamedObjectA(const name : STRPTR location 'a0';const TagList : pTagItem location 'a1') : pNamedObject; syscall _UtilityBase 228;
|
function AllocNamedObjectA(const name : STRPTR location 'a0';const TagList : pTagItem location 'a1') : pNamedObject; syscall _UtilityBase 228;
|
||||||
@ -389,6 +394,7 @@ FUNCTION Stricmp(CONST string1 : string; CONST string2 : string) : LONGINT;
|
|||||||
FUNCTION Strnicmp(CONST string1 : string; CONST string2 : pCHAR; length : LONGINT) : LONGINT;
|
FUNCTION Strnicmp(CONST string1 : string; CONST string2 : pCHAR; length : LONGINT) : LONGINT;
|
||||||
FUNCTION Strnicmp(CONST string1 : pCHAR; CONST string2 : string; length : LONGINT) : LONGINT;
|
FUNCTION Strnicmp(CONST string1 : pCHAR; CONST string2 : string; length : LONGINT) : LONGINT;
|
||||||
FUNCTION Strnicmp(CONST string1 : string; CONST string2 : string; length : LONGINT) : LONGINT;
|
FUNCTION Strnicmp(CONST string1 : string; CONST string2 : string; length : LONGINT) : LONGINT;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
function TAG_(value: pointer): PtrUInt; overload; inline;
|
function TAG_(value: pointer): PtrUInt; overload; inline;
|
||||||
@ -408,6 +414,40 @@ procedure HookEntryPas;
|
|||||||
|
|
||||||
IMPLEMENTATION
|
IMPLEMENTATION
|
||||||
|
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
{$HINTS OFF}
|
||||||
|
|
||||||
|
function NextTagItem(var Item: PTagItem): PTagItem; inline;
|
||||||
|
begin
|
||||||
|
NextTagItem := nil;
|
||||||
|
if Item = nil then
|
||||||
|
Exit;
|
||||||
|
//
|
||||||
|
Inc(Item);
|
||||||
|
repeat
|
||||||
|
if Item = nil then
|
||||||
|
Exit;
|
||||||
|
case Item^.ti_Tag of
|
||||||
|
TAG_DONE:
|
||||||
|
begin
|
||||||
|
Item := nil;
|
||||||
|
NextTagItem := nil;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
TAG_SKIP: Inc(Item, Item^.ti_Data);
|
||||||
|
TAG_MORE: Item := PTagItem(Item^.ti_Data);
|
||||||
|
TAG_IGNORE: Inc(Item);
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
NextTagItem := Item;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
until False;
|
||||||
|
end;
|
||||||
|
{$else}
|
||||||
|
|
||||||
|
|
||||||
function AllocNamedObject(name : STRPTR; Const argv : array of PtrUInt) : pNamedObject;
|
function AllocNamedObject(name : STRPTR; Const argv : array of PtrUInt) : pNamedObject;
|
||||||
begin
|
begin
|
||||||
AllocNamedObject := AllocNamedObjectA(name,@argv);
|
AllocNamedObject := AllocNamedObjectA(name,@argv);
|
||||||
@ -453,6 +493,7 @@ FUNCTION Strnicmp(CONST string1 : string; CONST string2 : string; length : LONGI
|
|||||||
begin
|
begin
|
||||||
Strnicmp := Strnicmp(PChar(RawbyteString(string1)),PChar(RawbyteString(string2)),length);
|
Strnicmp := Strnicmp(PChar(RawbyteString(string1)),PChar(RawbyteString(string2)),length);
|
||||||
end;
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
function TAG_(value: pointer): PtrUInt; inline;
|
function TAG_(value: pointer): PtrUInt; inline;
|
||||||
begin
|
begin
|
||||||
|
@ -88,10 +88,13 @@ function FExpandLock( l : BPTR): String;
|
|||||||
var
|
var
|
||||||
buffer : array[0..255] of char;
|
buffer : array[0..255] of char;
|
||||||
begin
|
begin
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
if l <> 0 then begin
|
if l <> 0 then begin
|
||||||
if NameFromLock(l,buffer,255) then FExpandLock := strpas(buffer)
|
if NameFromLock(l,buffer,255) then FExpandLock := strpas(buffer)
|
||||||
else FExpandLock := '';
|
else FExpandLock := '';
|
||||||
end else FExpandLock := '';
|
end else
|
||||||
|
{$endif}
|
||||||
|
FExpandLock := '';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function CSCPAR(rk : pRemember; s : String) : STRPTR;
|
Function CSCPAR(rk : pRemember; s : String) : STRPTR;
|
||||||
|
@ -59,9 +59,12 @@ begin
|
|||||||
if WBMsg <> nil then begin
|
if WBMsg <> nil then begin
|
||||||
ProgramName := strpas(WBMsg^.sm_ArgList^[1].wa_Name);
|
ProgramName := strpas(WBMsg^.sm_ArgList^[1].wa_Name);
|
||||||
end else begin
|
end else begin
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
if GetprogramName(buffer,255) then begin
|
if GetprogramName(buffer,255) then begin
|
||||||
ProgramName := strpas(buffer);
|
ProgramName := strpas(buffer);
|
||||||
end else begin
|
end else
|
||||||
|
{$endif}
|
||||||
|
begin
|
||||||
ProgramName := '';
|
ProgramName := '';
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -31,8 +31,10 @@ var
|
|||||||
fib: TFileInfoBlock;
|
fib: TFileInfoBlock;
|
||||||
begin
|
begin
|
||||||
Result := 0;
|
Result := 0;
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
if Boolean(ExamineFH(BPTR(Handle), @fib)) then
|
if Boolean(ExamineFH(BPTR(Handle), @fib)) then
|
||||||
Result := fib.fib_size;
|
Result := fib.fib_size;
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TInputPipeStream.GetPosition: Int64;
|
function TInputPipeStream.GetPosition: Int64;
|
||||||
@ -50,11 +52,13 @@ var
|
|||||||
Filename: array[0..255] of Char;
|
Filename: array[0..255] of Char;
|
||||||
DeleteIt: Boolean;
|
DeleteIt: Boolean;
|
||||||
begin
|
begin
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
if (FHandle <> UnusedHandle) and (FHandle <> 0) then
|
if (FHandle <> UnusedHandle) and (FHandle <> 0) then
|
||||||
begin
|
begin
|
||||||
DeleteIt := NameFromFH(BPTR(FHandle), @(Filename[0]), 255);
|
DeleteIt := NameFromFH(BPTR(FHandle), @(Filename[0]), 255);
|
||||||
FileClose(FHandle);
|
FileClose(FHandle);
|
||||||
if DeleteIt then
|
if DeleteIt then
|
||||||
AmigaDos.dosDeleteFile(@(Filename[0]));
|
AmigaDos.dosDeleteFile(@(Filename[0]));
|
||||||
end;
|
end;
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
@ -556,8 +556,10 @@ begin
|
|||||||
else
|
else
|
||||||
InternalWrite(CSI + '22;3'+ IntToStr(AnsiColors[Color].o) + 'm')
|
InternalWrite(CSI + '22;3'+ IntToStr(AnsiColors[Color].o) + 'm')
|
||||||
{$else}
|
{$else}
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
if Pens[Color] < 0 then
|
if Pens[Color] < 0 then
|
||||||
Pens[Color] := ObtainBestPen(IntuitionBase^.ActiveScreen^.ViewPort.ColorMap, AnsiColors[color].r shl 24, AnsiColors[color].g shl 24, AnsiColors[color].b shl 24, [TAG_END]);
|
Pens[Color] := ObtainBestPen(IntuitionBase^.ActiveScreen^.ViewPort.ColorMap, AnsiColors[color].r shl 24, AnsiColors[color].g shl 24, AnsiColors[color].b shl 24, [TAG_END]);
|
||||||
|
{$endif}
|
||||||
TheUnit := GetConUnit;
|
TheUnit := GetConUnit;
|
||||||
if Assigned(TheUnit) then
|
if Assigned(TheUnit) then
|
||||||
begin
|
begin
|
||||||
@ -595,8 +597,10 @@ begin
|
|||||||
else
|
else
|
||||||
InternalWrite(CSI + '22;4'+ IntToStr(AnsiColors[Color].o) + 'm')
|
InternalWrite(CSI + '22;4'+ IntToStr(AnsiColors[Color].o) + 'm')
|
||||||
{$else}
|
{$else}
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
if Pens[Color] < 0 then
|
if Pens[Color] < 0 then
|
||||||
Pens[Color] := ObtainBestPen(IntuitionBase^.ActiveScreen^.ViewPort.ColorMap, AnsiColors[color].r shl 24, AnsiColors[color].g shl 24, AnsiColors[color].b shl 24, [TAG_END]);
|
Pens[Color] := ObtainBestPen(IntuitionBase^.ActiveScreen^.ViewPort.ColorMap, AnsiColors[color].r shl 24, AnsiColors[color].g shl 24, AnsiColors[color].b shl 24, [TAG_END]);
|
||||||
|
{$endif}
|
||||||
TheUnit := GetConUnit;
|
TheUnit := GetConUnit;
|
||||||
if Assigned(TheUnit) then
|
if Assigned(TheUnit) then
|
||||||
begin
|
begin
|
||||||
@ -891,7 +895,9 @@ procedure InitCRT;
|
|||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
SetMode(DosOutput(), 1);
|
SetMode(DosOutput(), 1);
|
||||||
|
{$endif}
|
||||||
//
|
//
|
||||||
AssignCrt(Output);
|
AssignCrt(Output);
|
||||||
Rewrite(Output);
|
Rewrite(Output);
|
||||||
@ -913,11 +919,15 @@ procedure FreeCRT;
|
|||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
SetMode(DosOutput(), 0);
|
SetMode(DosOutput(), 0);
|
||||||
|
{$endif}
|
||||||
for i := 0 to High(Pens) do
|
for i := 0 to High(Pens) do
|
||||||
begin
|
begin
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
if Pens[i] >= 0 then
|
if Pens[i] >= 0 then
|
||||||
ReleasePen(IntuitionBase^.ActiveScreen^.ViewPort.ColorMap, Pens[i]);
|
ReleasePen(IntuitionBase^.ActiveScreen^.ViewPort.ColorMap, Pens[i]);
|
||||||
|
{$endif}
|
||||||
Pens[i] := -1;
|
Pens[i] := -1;
|
||||||
end;
|
end;
|
||||||
// reset colors and delete to end of screen (get rid of old drawings behind the last caret position)
|
// reset colors and delete to end of screen (get rid of old drawings behind the last caret position)
|
||||||
|
@ -31,6 +31,10 @@ interface
|
|||||||
|
|
||||||
function WaitForSystemEvent(millisec: Integer): boolean;
|
function WaitForSystemEvent(millisec: Integer): boolean;
|
||||||
|
|
||||||
|
function IBMToANSI(s: RawByteString): RawByteString;
|
||||||
|
function ANSIToIBM(s: RawByteString): RawByteString;
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
@ -175,6 +179,118 @@ begin
|
|||||||
LastShiftState := LastShiftState or $40;
|
LastShiftState := LastShiftState or $40;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure AnsiToIBMChar(var c: Char); inline;
|
||||||
|
begin
|
||||||
|
// https://en.wikipedia.org/wiki/Code_page_437
|
||||||
|
case c of
|
||||||
|
// line 8
|
||||||
|
#$C7: c := #128; // C
|
||||||
|
#$FC: c := #129; // ue
|
||||||
|
#$E9: c := #130; // e'
|
||||||
|
#$E2: c := #131; // a^
|
||||||
|
#$E4: c := #132; // ae
|
||||||
|
#$E0: c := #133; // a`
|
||||||
|
#$E5: c := #134; // a°
|
||||||
|
#$e7: c := #135; // c
|
||||||
|
#$ea: c := #136; // e^
|
||||||
|
#$eb: c := #137; // ee
|
||||||
|
#$E8: c := #138; // e`
|
||||||
|
#$ef: c := #139; // ie
|
||||||
|
#$ee: c := #140; // i^
|
||||||
|
#$ec: c := #141; // i`
|
||||||
|
#$C4: c := #142; // AE
|
||||||
|
// line 9
|
||||||
|
#$C9: c := #144; // Ee
|
||||||
|
#$e6: c := #145; // a-e
|
||||||
|
#$c6: c := #146; // A-E
|
||||||
|
#$F4: c := #147; // o^
|
||||||
|
#$F6: c := #148; // oe
|
||||||
|
#$F2: c := #149; // o`
|
||||||
|
#$FB: c := #150; // u^
|
||||||
|
#$F9: c := #151; // u`
|
||||||
|
#$FF: c := #152; // ye
|
||||||
|
#$D6: c := #153; // OE
|
||||||
|
#$DC: c := #154; // UE
|
||||||
|
#$A2: c := #155; // cent
|
||||||
|
#$A3: c := #156; // Pound
|
||||||
|
#$A5: c := #157; // Yen
|
||||||
|
// line A
|
||||||
|
#$E1: c := #160; // a'
|
||||||
|
#$ED: c := #161; // i'
|
||||||
|
#$F3: c := #162; // o'
|
||||||
|
#$FA: c := #163; // u'
|
||||||
|
#$F1: c := #164; // n~
|
||||||
|
#$D1: c := #165; // N~
|
||||||
|
// line E
|
||||||
|
#$DF: c := #225; // sz
|
||||||
|
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure IBMToAnsiChar(var c: Char); inline;
|
||||||
|
begin
|
||||||
|
case c of
|
||||||
|
// line 8
|
||||||
|
#128: c := #$C7; // C
|
||||||
|
#129: c := #$FC; // ue
|
||||||
|
#130: c := #$E9; // e'
|
||||||
|
#131: c := #$E2; // a^
|
||||||
|
#132: c := #$E4; // ae
|
||||||
|
#133: c := #$E0; // a`
|
||||||
|
#134: c := #$E5; // a°
|
||||||
|
#135: c := #$e7; // c
|
||||||
|
#136: c := #$ea; // e^
|
||||||
|
#137: c := #$eb; // ee
|
||||||
|
#138: c := #$E8; // e`
|
||||||
|
#139: c := #$ef; // ie
|
||||||
|
#140: c := #$ee; // i^
|
||||||
|
#141: c := #$ec; // i`
|
||||||
|
#142: c := #$C4; // AE
|
||||||
|
// line 9
|
||||||
|
#144: c := #$C9; // Ee
|
||||||
|
#145: c := #$e6; // a-e
|
||||||
|
#146: c := #$c6; // A-E
|
||||||
|
#147: c := #$F4; // o^
|
||||||
|
#148: c := #$F6; // oe
|
||||||
|
#149: c := #$F2; // o`
|
||||||
|
#150: c := #$FB; // u^
|
||||||
|
#151: c := #$F9; // u`
|
||||||
|
#152: c := #$FF; // ye
|
||||||
|
#153: c := #$D6; // OE
|
||||||
|
#154: c := #$DC; // UE
|
||||||
|
#155: c := #$A2; // cent
|
||||||
|
#156: c := #$A3; // Pound
|
||||||
|
#157: c := #$A5; // Yen
|
||||||
|
// line A
|
||||||
|
#160: c := #$E1; // a'
|
||||||
|
#161: c := #$ED; // i'
|
||||||
|
#162: c := #$F3; // o'
|
||||||
|
#163: c := #$FA; // u'
|
||||||
|
#164: c := #$F1; // n~
|
||||||
|
#165: c := #$D1; // N~
|
||||||
|
// line E
|
||||||
|
#225: c := #$DF; // sz
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function IBMToANSI(s: RawByteString): RawByteString;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i := 1 to Length(s) do
|
||||||
|
IBMToAnsiChar(s[i]);
|
||||||
|
IBMToANSI := s;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ANSIToIBM(s: RawByteString): RawByteString;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i := 1 to Length(s) do
|
||||||
|
AnsiToIBMChar(s[i]);
|
||||||
|
ANSIToIBM := s;
|
||||||
|
end;
|
||||||
|
|
||||||
function SysPollKeyEvent: TKeyEvent;
|
function SysPollKeyEvent: TKeyEvent;
|
||||||
var
|
var
|
||||||
MouseEvent: Boolean; // got a mouseevent -> do not leave cycle
|
MouseEvent: Boolean; // got a mouseevent -> do not leave cycle
|
||||||
@ -344,6 +460,7 @@ begin
|
|||||||
ie.ie_position.ie_addr := PPointer(IAddr)^;
|
ie.ie_position.ie_addr := PPointer(IAddr)^;
|
||||||
Buff[0] := #0;
|
Buff[0] := #0;
|
||||||
Ret := MapRawKey(@ie, @Buff[0], 1, nil);
|
Ret := MapRawKey(@ie, @Buff[0], 1, nil);
|
||||||
|
AnsiToIBMChar(Buff[0]);
|
||||||
KeyCode := Ord(Buff[0]);
|
KeyCode := Ord(Buff[0]);
|
||||||
KeySet^.KeyCode := Ord(Buff[0]); // if maprawkey does not work it still is 0
|
KeySet^.KeyCode := Ord(Buff[0]); // if maprawkey does not work it still is 0
|
||||||
KeySet^.ShiftState := LastShiftState; // shift state set before the case
|
KeySet^.ShiftState := LastShiftState; // shift state set before the case
|
||||||
|
@ -129,6 +129,9 @@ begin
|
|||||||
SA_Draggable , 1,
|
SA_Draggable , 1,
|
||||||
SA_Quiet , 1,
|
SA_Quiet , 1,
|
||||||
SA_LikeWorkbench , 1, // Let OS
|
SA_LikeWorkbench , 1, // Let OS
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
SA_Depth , 4,
|
||||||
|
{$endif}
|
||||||
TAG_END, TAG_END
|
TAG_END, TAG_END
|
||||||
]);
|
]);
|
||||||
{$ifdef VIDEODEBUG}
|
{$ifdef VIDEODEBUG}
|
||||||
@ -174,9 +177,10 @@ var
|
|||||||
videoDefaultFlags: PtrUInt;
|
videoDefaultFlags: PtrUInt;
|
||||||
begin
|
begin
|
||||||
videoDefaultFlags:=VIDEO_WFLG_DEFAULTS;
|
videoDefaultFlags:=VIDEO_WFLG_DEFAULTS;
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
if GetVar('FPC_VIDEO_SIMPLEREFRESH',@envBuf,sizeof(envBuf),0) > -1 then
|
if GetVar('FPC_VIDEO_SIMPLEREFRESH',@envBuf,sizeof(envBuf),0) > -1 then
|
||||||
videoDefaultFlags:=videoDefaultFlags and not WFLG_SMART_REFRESH;
|
videoDefaultFlags:=videoDefaultFlags and not WFLG_SMART_REFRESH;
|
||||||
|
{$endif}
|
||||||
if FPC_VIDEO_FULLSCREEN then
|
if FPC_VIDEO_FULLSCREEN then
|
||||||
begin
|
begin
|
||||||
OS_Screen := GetScreen;
|
OS_Screen := GetScreen;
|
||||||
@ -196,7 +200,7 @@ begin
|
|||||||
WA_Activate , 1,
|
WA_Activate , 1,
|
||||||
WA_Borderless , 1,
|
WA_Borderless , 1,
|
||||||
WA_BackDrop , 1,
|
WA_BackDrop , 1,
|
||||||
WA_FLAGS , VIDEO_WFLG_DEFAULTS,
|
WA_FLAGS , VIDEO_WFLG_DEFAULTS or WFLG_BORDERLESS,
|
||||||
WA_IDCMP , VIDEO_IDCMP_DEFAULTS,
|
WA_IDCMP , VIDEO_IDCMP_DEFAULTS,
|
||||||
TAG_END, TAG_END
|
TAG_END, TAG_END
|
||||||
]);
|
]);
|
||||||
@ -266,6 +270,11 @@ begin
|
|||||||
{ FIXME/TODO: next to the hardwired selection, there could be some heuristics,
|
{ FIXME/TODO: next to the hardwired selection, there could be some heuristics,
|
||||||
which sets the font size correctly on screens according to the aspect
|
which sets the font size correctly on screens according to the aspect
|
||||||
ratio. (KB) }
|
ratio. (KB) }
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
VideoFont:=@vgafont8;
|
||||||
|
VideoFontHeight:=8;
|
||||||
|
FPC_VIDEO_FULLSCREEN := True;
|
||||||
|
{$else}
|
||||||
VideoFont:=@vgafont;
|
VideoFont:=@vgafont;
|
||||||
VideoFontHeight:=16;
|
VideoFontHeight:=16;
|
||||||
if GetVar('FPC_VIDEO_BUILTINFONT',@envBuf,sizeof(envBuf),0) > -1 then
|
if GetVar('FPC_VIDEO_BUILTINFONT',@envBuf,sizeof(envBuf),0) > -1 then
|
||||||
@ -283,6 +292,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
// fill videobuf and oldvideobuf with different bytes, to allow proper first draw
|
// fill videobuf and oldvideobuf with different bytes, to allow proper first draw
|
||||||
FillDword(VideoBuf^, VideoBufSize div 4, $1234D3AD);
|
FillDword(VideoBuf^, VideoBufSize div 4, $1234D3AD);
|
||||||
@ -305,7 +315,7 @@ begin
|
|||||||
// borders or titlebar as intended.
|
// borders or titlebar as intended.
|
||||||
ScreenWidth := VideoWindow^.GZZWidth div 8;
|
ScreenWidth := VideoWindow^.GZZWidth div 8;
|
||||||
ScreenHeight := VideoWindow^.GZZHeight div VideoFontHeight;
|
ScreenHeight := VideoWindow^.GZZHeight div VideoFontHeight;
|
||||||
ScreenColor := False;
|
ScreenColor := True;
|
||||||
|
|
||||||
{$ifdef VIDEODEBUG}
|
{$ifdef VIDEODEBUG}
|
||||||
Writeln('DEBUG: Fullscreen - windowed - Width * Heigth = ',ScreenWidth,' * ',ScreenHeight);
|
Writeln('DEBUG: Fullscreen - windowed - Width * Heigth = ',ScreenWidth,' * ',ScreenHeight);
|
||||||
@ -326,8 +336,13 @@ begin
|
|||||||
|
|
||||||
for Counter := 0 to 15 do
|
for Counter := 0 to 15 do
|
||||||
begin
|
begin
|
||||||
VideoPens[Counter] := ObtainBestPenA(VideoColorMap,
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
VideoPens[Counter] := Counter;
|
||||||
|
SetRGB4(@(PScreen(VideoWindow^.WScreen)^.ViewPort), Counter, vgacolors[counter, 0] shr 4, vgacolors[counter, 1] shr 4, vgacolors[counter, 2] shr 4);
|
||||||
|
{$else}
|
||||||
|
VideoPens[Counter] := ObtainBestPenA(VideoColorMap,
|
||||||
vgacolors[counter, 0] shl 24, vgacolors[counter, 1] shl 24, vgacolors[counter, 2] shl 24, nil);
|
vgacolors[counter, 0] shl 24, vgacolors[counter, 1] shl 24, vgacolors[counter, 2] shl 24, nil);
|
||||||
|
{$endif}
|
||||||
{$ifdef VIDEODEBUG}
|
{$ifdef VIDEODEBUG}
|
||||||
If VideoPens[Counter] = -1 then
|
If VideoPens[Counter] = -1 then
|
||||||
WriteLn('errr color[',Counter,'] = ', VideoPens[Counter])
|
WriteLn('errr color[',Counter,'] = ', VideoPens[Counter])
|
||||||
@ -437,8 +452,10 @@ begin
|
|||||||
FreeBitmap(BufRp^.Bitmap);
|
FreeBitmap(BufRp^.Bitmap);
|
||||||
BufRp^.Bitmap := nil;
|
BufRp^.Bitmap := nil;
|
||||||
{$endif}
|
{$endif}
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
for Counter := 0 to 15 do
|
for Counter := 0 to 15 do
|
||||||
ReleasePen(VideoColorMap, VideoPens[Counter]);
|
ReleasePen(VideoColorMap, VideoPens[Counter]);
|
||||||
|
{$endif}
|
||||||
if ((FPC_VIDEO_FULLSCREEN) and (OS_Screen <> nil)) then
|
if ((FPC_VIDEO_FULLSCREEN) and (OS_Screen <> nil)) then
|
||||||
begin
|
begin
|
||||||
CloseScreen(OS_Screen);
|
CloseScreen(OS_Screen);
|
||||||
@ -821,7 +838,11 @@ end;
|
|||||||
|
|
||||||
function SysGetVideoModeCount: Word;
|
function SysGetVideoModeCount: Word;
|
||||||
begin
|
begin
|
||||||
|
{$if defined(AMIGA_V1_2_ONLY)}
|
||||||
|
SysGetVideoModeCount := 1;
|
||||||
|
{$else}
|
||||||
SysGetVideoModeCount := 2;
|
SysGetVideoModeCount := 2;
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function SysGetVideoModeData(Index: Word; var Mode: TVideoMode): Boolean;
|
function SysGetVideoModeData(Index: Word; var Mode: TVideoMode): Boolean;
|
||||||
@ -832,8 +853,9 @@ begin
|
|||||||
0: begin
|
0: begin
|
||||||
Mode.Col := 80;
|
Mode.Col := 80;
|
||||||
Mode.Row := 25;
|
Mode.Row := 25;
|
||||||
Mode.Color := True;
|
Mode.Color := False;
|
||||||
end;
|
end;
|
||||||
|
{$if not defined(AMIGA_V1_2_ONLY)}
|
||||||
1: begin
|
1: begin
|
||||||
Screen := LockPubScreen('Workbench');
|
Screen := LockPubScreen('Workbench');
|
||||||
Mode.Col := Screen^.Width div 8;
|
Mode.Col := Screen^.Width div 8;
|
||||||
@ -841,6 +863,7 @@ begin
|
|||||||
UnlockPubScreen('Workbench', Screen);
|
UnlockPubScreen('Workbench', Screen);
|
||||||
Mode.Color := False;
|
Mode.Color := False;
|
||||||
end;
|
end;
|
||||||
|
{$endif}
|
||||||
end;
|
end;
|
||||||
SysGetVideoModeData := True;
|
SysGetVideoModeData := True;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user