Browse Source

fix result type for ARM Zynq build

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8481 8c9fc860-2736-0410-a75d-ab315db34111
eth.metacore 6 năm trước cách đây
mục cha
commit
5a8d15b3db

+ 3 - 3
source/ARM.Usb.Mod

@@ -803,7 +803,7 @@ TYPE
 			temp : RegisteredDriver;
 			drv : Usbdi.Driver;
 			interface : InterfaceDescriptor;
-			i, res : LONGINT;
+			i : LONGINT; res : WORD;
 			name : Usbdi.Name;
 			suffix : LONGINT; (* 0-99; suffix is used to generate unique names for AosPlugin.Name *)
 		BEGIN
@@ -1726,9 +1726,9 @@ BEGIN {EXCLUSIVE}
 END RemoveRootHub;
 
 PROCEDURE InstallRootHubs;
-VAR table : Plugins.Table; i : LONGINT;
+VAR table : Plugins.Table; i : LONGINT; res: WORD;
 BEGIN
-	UsbHcdi.controllers.AddEventHandler(RootHubEvent, i); (* ignore res *)
+	UsbHcdi.controllers.AddEventHandler(RootHubEvent, res); (* ignore res *)
 	UsbHcdi.controllers.GetAll(table);
 	IF table # NIL THEN
 		FOR i := 0 TO LEN(table)-1 DO AddRootHub(table[i](UsbHcdi.Hcd)); END;

+ 1 - 1
source/ARM.UsbHcdi.Mod

@@ -1410,7 +1410,7 @@ END Copy;
 
 (** Assign a name to the host controller and add it to the controllers registry *)
 PROCEDURE RegisterHostController*(hcd : Hcd; CONST description : Plugins.Description);
-VAR name : Plugins.Name; res : LONGINT;
+VAR name : Plugins.Name; res : WORD;
 BEGIN {EXCLUSIVE}
 	name := "USBHC"; name[5] := CHR(controllerCount + 48); name[6] := 0X;
 	hcd.SetName(name); hcd.desc := description;

+ 2 - 1
source/ARM.UsbHidDriver.Mod

@@ -1119,7 +1119,8 @@ TYPE
 		VAR
 			joystickColl		: UsbHidReport.HidCollection;
 			temp			: UsbHidReport.HidReport;
-			res,i			: LONGINT;
+			res			: WORD;
+			i				: LONGINT;
 		BEGIN
 			(*get joystick collection: joystick collection uses UsagePage(Generic Desktop Controlsl)->1 and Usage(Joystick)->4*)
 			joystickColl := reportManager.GetCollection(UsagePage.GenericDesktopPage,4);

+ 5 - 5
source/ARM.UsbStorageBase.Mod

@@ -166,7 +166,7 @@ TYPE
 		number : LONGINT; (* Suffix appended to name to get unique device name *)
 		next : UsbStorageDevice;
 
-		PROCEDURE Transfer* (op, block, num: LONGINT; VAR data: ARRAY OF CHAR; ofs: LONGINT; VAR diskres: LONGINT);
+		PROCEDURE Transfer* (op, block, num: LONGINT; VAR data: ARRAY OF CHAR; ofs: LONGINT; VAR diskres: WORD);
 		VAR direction : SET; cmd : ARRAY 12 OF CHAR; i, tlen, trans, offset, num0 : LONGINT;
 		BEGIN {EXCLUSIVE}
 			IF (op = Disks.Read) OR (op = Disks.Write) THEN
@@ -215,7 +215,7 @@ TYPE
 		END Transfer;
 
 		(** Get number of blocks and size of blocks using the UFI Read Capacity command *)
-		PROCEDURE GetSize* (VAR size, res: LONGINT);
+		PROCEDURE GetSize* (VAR size: LONGINT; VAR res: WORD);
 		BEGIN {EXCLUSIVE}
 			IF Debug.Trace & Debug.traceInfo THEN KernelLog.String("UsbStorage: GetSize: "); KernelLog.Ln; END;
 			(* Some devices I've seen didn't like to be asked for their capacity when no medium was inserted... *)
@@ -235,7 +235,7 @@ TYPE
 			res := ResOk; (* Allow short transfer *)
 		END GetSize;
 
-		PROCEDURE Handle*(VAR msg: Disks.Message; VAR diskres: LONGINT);
+		PROCEDURE Handle*(VAR msg: Disks.Message; VAR diskres: WORD);
 		VAR cmd : ARRAY 12 OF CHAR; i : LONGINT; fdp : FlexibleDiskPage;
 		BEGIN {EXCLUSIVE}
 			FOR i := 0 TO 11 DO cmd[i] := CHR(0); END;
@@ -870,7 +870,7 @@ TYPE
 		storageDeviceList : UsbStorageDevice;
 		suffixUsed : ARRAY 100 OF BOOLEAN;
 		regName : ARRAY 32 OF CHAR;
-		res : LONGINT;
+		res : WORD;
 
 		PROCEDURE Add*(dev : UsbStorageDevice);
 		VAR i : LONGINT;
@@ -1136,7 +1136,7 @@ BEGIN
 	END;
 END ShowSenseData;
 
-PROCEDURE ShowRes(res : LONGINT);
+PROCEDURE ShowRes(res : WORD);
 BEGIN
 	IF Debug.Level >= Debug.Errors THEN
 	CASE res OF

+ 26 - 26
source/Sd.Mod

@@ -495,9 +495,9 @@ CONST
 
 TYPE
 	(** Command execution procedure *)
-	CommandProcedure * = PROCEDURE (VAR command: Command; VAR result: LONGINT): BOOLEAN;
+	CommandProcedure * = PROCEDURE (VAR command: Command; VAR result: WORD): BOOLEAN;
 	(** Data command execution procedure *)
-	TransferProcedure * = PROCEDURE (VAR command: Command; VAR data: ARRAY OF SYSTEM.BYTE; ofs, len: LONGINT; VAR result: LONGINT): BOOLEAN;
+	TransferProcedure * = PROCEDURE (VAR command: Command; VAR data: ARRAY OF SYSTEM.BYTE; ofs, len: LONGINT; VAR result: WORD): BOOLEAN;
 	(** Procedure called to wait for interrupt. mask specifies which interrupts are expected, timeout is in ms. Returns FALSE if timeout occurred *)
 	Blocker * = PROCEDURE {DELEGATE} (hc: HostController; mask: SET; timeout: LONGINT): BOOLEAN;
 
@@ -689,7 +689,7 @@ VAR
 	END InitHostController;
 
 	(** Set external clock for a host controller. Host state must be HcConfiguring. bus is the SD bus clock frequency, timeout is the timeout clock frequency. *)
-	PROCEDURE SetExternalClock * (hc: HostController; bus, timeout: HUGEINT; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE SetExternalClock * (hc: HostController; bus, timeout: HUGEINT; VAR result: WORD): BOOLEAN;
 	BEGIN
 		IF hc.state # HcConfiguring THEN
 			result := ErrorInvalidParameters;
@@ -704,7 +704,7 @@ VAR
 	(** Set an event handler for a host controller *)
 	PROCEDURE SetEventHandler * (hc: HostController; handler: EventHandler; param: ANY);
 	VAR
-		result: LONGINT;
+		result: WORD;
 	BEGIN
 		hc.handle := handler;
 		hc.handlerParam := param;
@@ -755,7 +755,7 @@ VAR
 			o Execute the command
 			o Wait for response
 	*)
-	PROCEDURE ExecuteCommand (VAR command: Command; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE ExecuteCommand (VAR command: Command; VAR result: WORD): BOOLEAN;
 	VAR
 		status, r1: SET;
 	BEGIN
@@ -802,7 +802,7 @@ VAR
 		Execute command with data transfer using CPU.
 		Data is read from/written to [data[ofs], data[ofs + len]).
 	*)
-	PROCEDURE ExecuteDataCommand (VAR command: Command; VAR data: ARRAY OF SYSTEM.BYTE; ofs, len: LONGINT; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE ExecuteDataCommand (VAR command: Command; VAR data: ARRAY OF SYSTEM.BYTE; ofs, len: LONGINT; VAR result: WORD): BOOLEAN;
 	TYPE
 		DataBytes = ARRAY 4 OF CHAR;
 	VAR
@@ -956,7 +956,7 @@ VAR
 		data, ofs, len: Buffer
 		result: error code
 	*)
-	PROCEDURE ExecuteAdmaCommand (VAR command: Command; VAR data: ARRAY OF SYSTEM.BYTE; ofs, len: LONGINT; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE ExecuteAdmaCommand (VAR command: Command; VAR data: ARRAY OF SYSTEM.BYTE; ofs, len: LONGINT; VAR result: WORD): BOOLEAN;
 	VAR
 		tt: SdEnvironment.Time;
 		hc: HostController;
@@ -1135,7 +1135,7 @@ VAR
 	END GetResponse;
 
 	(** Issue an SD Card Transaction. [Simplified specs. 3.7.1.1 pp. 106-108] *)
-	PROCEDURE StartCommand (hc: HostController; cmd, argument, responseType: LONGINT; read, dma, busy, abort: BOOLEAN; VAR status: SET; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE StartCommand (hc: HostController; cmd, argument, responseType: LONGINT; read, dma, busy, abort: BOOLEAN; VAR status: SET; VAR result: WORD): BOOLEAN;
 	VAR
 		t: HUGEINT;
 		reg: LONGINT;
@@ -1244,7 +1244,7 @@ VAR
 		Perform error recovery as specified by the triggered error interrupts.
 		Returns an error code (result) and the interrupt status register before recovery (status)
 	*)
-	PROCEDURE ErrorRecovery (hc: HostController; VAR result: LONGINT; VAR status: SET): BOOLEAN;
+	PROCEDURE ErrorRecovery (hc: HostController; VAR result: WORD; VAR status: SET): BOOLEAN;
 	BEGIN
 		(* 1 is done *)
 		status := hc.regs.InterruptStatus;
@@ -1307,7 +1307,7 @@ VAR
 	END ErrorRecovery;
 
 	(** Wait for completion of an SD command [Simplified specs. 3.7.1.2 pp. 109-110 *)
-	PROCEDURE WaitForCompletion (hc: HostController; tryRecover: BOOLEAN; 	VAR status: SET; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE WaitForCompletion (hc: HostController; tryRecover: BOOLEAN; 	VAR status: SET; VAR result: WORD): BOOLEAN;
 	BEGIN
 		result := ErrorNone;
 
@@ -1347,7 +1347,7 @@ VAR
 	END WaitForCompletion;
 
 	(** Wait for transfer complete interrupt *)
-	PROCEDURE WaitForTransfer (hc: HostController; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE WaitForTransfer (hc: HostController; VAR result: WORD): BOOLEAN;
 	VAR
 		status: SET;
 	BEGIN
@@ -1380,7 +1380,7 @@ VAR
 	END SpinBlock;
 
 	(** Sends CMD7 if necessary to select the given card *)
-	PROCEDURE SelectCard * (hc: HostController; card: LONGINT; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE SelectCard * (hc: HostController; card: LONGINT; VAR result: WORD): BOOLEAN;
 	VAR
 		command: Command;
 		status: SET;
@@ -1406,10 +1406,10 @@ VAR
 	END SelectCard;
 
 	(** Deselects all cards *)
-	PROCEDURE DeselectCards * (hc: HostController; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE DeselectCards * (hc: HostController; VAR result: WORD): BOOLEAN;
 	VAR
 		command: Command;
-		ignoreRes: LONGINT;
+		ignoreRes: WORD;
 		ignoreBool: BOOLEAN;
 	BEGIN
 		result := ErrorNone;
@@ -1553,7 +1553,7 @@ VAR
 	END SetTimeout;
 
 	(** Set the data bus width for a given RCA. *)
-	PROCEDURE SetBusWidth (hc: HostController; card: Card; width: LONGINT; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE SetBusWidth (hc: HostController; card: Card; width: LONGINT; VAR result: WORD): BOOLEAN;
 	VAR
 		command: Command;
 		val: LONGINT;
@@ -1601,7 +1601,7 @@ VAR
 	END SetBusWidth;
 
 	(** Executes a switch function command *)
-	PROCEDURE SwitchFunc (card: Card; switch: BOOLEAN; funcs: ARRAY 6 OF LONGINT; VAR sts: SwitchFuncStatus; VAR res: LONGINT): BOOLEAN;
+	PROCEDURE SwitchFunc (card: Card; switch: BOOLEAN; funcs: ARRAY 6 OF LONGINT; VAR sts: SwitchFuncStatus; VAR res: WORD): BOOLEAN;
 	VAR
 		status: ARRAY 64 OF CHAR;
 		command: Command;
@@ -1668,7 +1668,7 @@ VAR
 	PROCEDURE HandleInterrupt * (hc: HostController);
 	VAR
 		card: Card;
-		result: LONGINT;
+		result: WORD;
 		interruptStatus: SET;
 	BEGIN
 		interruptStatus := hc.regs.InterruptStatus;
@@ -1790,7 +1790,7 @@ TYPE
 		Initializes a new card on the host controller.
 		Executes all commands until either an error occurs or the card is ready for data transfers.
 	*)
-	PROCEDURE InitCard * (hc: HostController; card: Card; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE InitCard * (hc: HostController; card: Card; VAR result: WORD): BOOLEAN;
 	VAR
 		response: LONGINT;
 		status: SET;
@@ -1991,7 +1991,7 @@ TYPE
 	END InitCard;
 
 	(** Write 'data[ofs, ofs + len)' to 'card', starting at block 'firstBlock'. *)
-	PROCEDURE Write * (card: Card; firstBlock, len: LONGINT; VAR data: ARRAY OF SYSTEM.BYTE; ofs: LONGINT; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE Write * (card: Card; firstBlock, len: LONGINT; VAR data: ARRAY OF SYSTEM.BYTE; ofs: LONGINT; VAR result: WORD): BOOLEAN;
 	VAR
 		command: Command;
 		start, stop: HUGEINT;
@@ -2043,7 +2043,7 @@ TYPE
 	END Write;
 
 	(** Read 'len' bytes starting from 'firstBlock' of 'card' to 'data[ofs, ofs + len)' *)
-	PROCEDURE Read * (card: Card; firstBlock, len: LONGINT; VAR data: ARRAY OF SYSTEM.BYTE; ofs: LONGINT; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE Read * (card: Card; firstBlock, len: LONGINT; VAR data: ARRAY OF SYSTEM.BYTE; ofs: LONGINT; VAR result: WORD): BOOLEAN;
 	VAR
 		command: Command;
 		start, stop: HUGEINT;
@@ -2085,7 +2085,7 @@ TYPE
 	END Read;
 
 	(** Erase blocks [block, block + num) on specified card. *)
-	PROCEDURE Erase * (card: Card; block, num: LONGINT; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE Erase * (card: Card; block, num: LONGINT; VAR result: WORD): BOOLEAN;
 	VAR
 		command: Command;
 		r1: SET;
@@ -2120,7 +2120,7 @@ TYPE
 		RETURN TRUE
 	END Erase;
 
-	PROCEDURE ReadCsd (card: Card; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE ReadCsd (card: Card; VAR result: WORD): BOOLEAN;
 	VAR
 		command: Command;
 		csd: ARRAY 4 OF LONGINT;
@@ -2147,7 +2147,7 @@ TYPE
 	END ReadCsd;
 
 	(** Read the SD card Configuration Register of a card *)
-	PROCEDURE ReadScr (card: Card; VAR result: LONGINT): BOOLEAN;
+	PROCEDURE ReadScr (card: Card; VAR result: WORD): BOOLEAN;
 	VAR
 		command: Command;
 		ofs: LONGINT;
@@ -2187,7 +2187,7 @@ TYPE
 	VAR
 		status: ARRAY 64 OF CHAR;
 		command: Command;
-		ignore: LONGINT;
+		ignore: WORD;
 		bitfield: POINTER {UNSAFE,UNTRACED} TO Bitfield;
 		c: CHAR;
 		i: LONGINT;
@@ -2216,7 +2216,7 @@ TYPE
 	VAR
 		cid: Cid;
 		command: Command;
-		res: LONGINT;
+		res: WORD;
 	BEGIN
 		IF ~DeselectCards(card.hc, res) THEN HALT(512) END;
 		command.hc := card.hc;
@@ -2265,7 +2265,7 @@ TYPE
 	END ComputeTimeouts;
 
 	(** Select card speed mode. It is necessary to set it to high in order to use higher bus clock frequencies. *)
-	PROCEDURE SelectSpeedMode(card: Card; high: BOOLEAN; VAR res: LONGINT): BOOLEAN;
+	PROCEDURE SelectSpeedMode(card: Card; high: BOOLEAN; VAR res: WORD): BOOLEAN;
 	VAR
 		funcs: ARRAY 6 OF LONGINT;
 		status: SwitchFuncStatus;

+ 5 - 5
source/SdDisks.Mod

@@ -51,7 +51,7 @@ TYPE
 			END;
 		END InitSdDevice;
 
-		PROCEDURE Transfer0 * (op, block, num: LONGINT; VAR data: ARRAY OF CHAR; ofs: LONGINT; VAR res: LONGINT);
+		PROCEDURE Transfer0 * (op, block, num: LONGINT; VAR data: ARRAY OF CHAR; ofs: LONGINT; VAR res: WORD);
 		VAR ok: BOOLEAN;
 		BEGIN
 			CASE op OF
@@ -62,7 +62,7 @@ TYPE
 			END
 		END Transfer0;
 
-		PROCEDURE Transfer * (op, block, num: LONGINT; VAR data: ARRAY OF CHAR; offs: LONGINT; VAR res: LONGINT);
+		PROCEDURE Transfer * (op, block, num: LONGINT; VAR data: ARRAY OF CHAR; offs: LONGINT; VAR res: WORD);
 		VAR
 			t: SdEnvironment.Time;
 		BEGIN{EXCLUSIVE}
@@ -82,14 +82,14 @@ TYPE
 (*			TRACE(block,num,t);*)
 		END Transfer;
 
-		PROCEDURE GetSize * (VAR size, res: LONGINT);
+		PROCEDURE GetSize * (VAR size: LONGINT; VAR res: WORD);
 		BEGIN
 			size := LONGINT(card.csd.capacity);
 			IF size < 0 THEN size := MAX(LONGINT) END;
 			res := Disks.Ok
 		END GetSize;
 
-		PROCEDURE Handle * (VAR msg: Disks.Message;  VAR res: LONGINT);
+		PROCEDURE Handle * (VAR msg: Disks.Message;  VAR res: WORD);
 		BEGIN
 			res := 0;
 			IF msg IS Disks.LockMsg THEN
@@ -171,7 +171,7 @@ TYPE
 	VAR
 		disk, prev: Device;
 		name, id: ARRAY 32 OF CHAR;
-		result: LONGINT;
+		result: WORD;
 	BEGIN
 		CASE event OF
 			 Sd.OnInitialization:

+ 1 - 1
source/Zynq.DisplayLinear.Mod

@@ -200,7 +200,7 @@ VAR
 
 	PROCEDURE Init;
 	VAR
-		res: LONGINT;
+		res: WORD;
 		d: LONGINT;
 	BEGIN
 		SetupClocks;

+ 8 - 8
source/Zynq.PsSerials.Mod

@@ -20,7 +20,7 @@ TYPE
 			ASSERT(uart # NIL);
 		END Init;
 
-		PROCEDURE Open (bps, data, parity, stop : LONGINT; VAR res: LONGINT);
+		PROCEDURE Open (bps, data, parity, stop : LONGINT; VAR res: WORD);
 		BEGIN{EXCLUSIVE}
 			PsUart.Open(uart, bps, data, parity, stop, res);
 		END Open;
@@ -30,7 +30,7 @@ TYPE
 			PsUart.Close(uart);
 		END Close;
 
-		PROCEDURE BusyLoopCallback(VAR res: LONGINT): BOOLEAN;
+		PROCEDURE BusyLoopCallback(VAR res: WORD): BOOLEAN;
 		BEGIN
 			IF uart.open THEN
 				Objects.Yield;
@@ -41,7 +41,7 @@ TYPE
 			END;
 		END BusyLoopCallback;
 
-		PROCEDURE BusyLoopCallback0(VAR res: LONGINT): BOOLEAN;
+		PROCEDURE BusyLoopCallback0(VAR res: WORD): BOOLEAN;
 		BEGIN
 			IF uart.open THEN
 				RETURN TRUE;
@@ -52,7 +52,7 @@ TYPE
 		END BusyLoopCallback0;
 
 		(*! This method can be used for trace output *)
-		PROCEDURE SendChar(char: CHAR; VAR res: LONGINT);
+		PROCEDURE SendChar(char: CHAR; VAR res: WORD);
 		BEGIN
 			Machine.AcquireObject(sendLock);
 			(*! use BusyLoopCallback0 method to make sure no low-level lock is acquired here - required when used as trace output *)
@@ -62,7 +62,7 @@ TYPE
 		END SendChar;
 
 		(*! This method must not be used for trace output! *)
-		PROCEDURE Send(CONST buf: ARRAY OF CHAR; ofs, len: LONGINT; propagate: BOOLEAN; VAR res: LONGINT);
+		PROCEDURE Send(CONST buf: ARRAY OF CHAR; ofs, len: LONGINT; propagate: BOOLEAN; VAR res: WORD);
 		BEGIN
 			Machine.AcquireObject(sendLock);
 			PsUart.Send(uart, buf, ofs, len, propagate, BusyLoopCallback, res);
@@ -70,7 +70,7 @@ TYPE
 			Machine.ReleaseObject(sendLock);
 		END Send;
 
-		PROCEDURE ReceiveChar(VAR char: CHAR; VAR res: LONGINT);
+		PROCEDURE ReceiveChar(VAR char: CHAR; VAR res: WORD);
 		BEGIN
 			Machine.AcquireObject(recvLock);
 			char := PsUart.ReceiveChar(uart, BusyLoopCallback, res);
@@ -78,7 +78,7 @@ TYPE
 			Machine.ReleaseObject(recvLock);
 		END ReceiveChar;
 
-		PROCEDURE Receive(VAR buf: ARRAY OF CHAR; ofs, size, min: LONGINT; VAR len, res: LONGINT);
+		PROCEDURE Receive(VAR buf: ARRAY OF CHAR; ofs, size, min: LONGINT; VAR len: LONGINT; VAR res: WORD);
 		BEGIN
 			Machine.AcquireObject(recvLock);
 			PsUart.Receive(uart, buf, ofs, size, min, len, BusyLoopCallback, res);
@@ -107,7 +107,7 @@ VAR
 
 	PROCEDURE Init;
 	VAR
-		i, clk, res: LONGINT;
+		i, clk: LONGINT; res: WORD;
 		name, desc: ARRAY 32 OF CHAR;
 		tracePort: LONGINT;
 	BEGIN

+ 3 - 3
source/Zynq.PsTraceDevice.Mod

@@ -10,15 +10,15 @@ VAR
 	uart: PsUartMin.UartRegisters;
 
 	PROCEDURE TraceChar(ch: CHAR);
-	VAR ignore: LONGINT;
+	VAR res: WORD;
 	BEGIN
-		PsUartMin.SendChar(uart, ch, TRUE, NIL, ignore);
+		PsUartMin.SendChar(uart, ch, TRUE, NIL, res);
 	END TraceChar;
 
 	PROCEDURE Install *;
 	VAR
 		uartId: LONGINT;
-		res: LONGINT;
+		res: WORD;
 	BEGIN
 		Trace.Init;
 		uartId := BootConfig.GetIntValue("TracePort")-1;

+ 6 - 6
source/Zynq.PsUart.Mod

@@ -164,7 +164,7 @@ VAR
 		inputClock: controller input clock in Hz
 		res: returned error code, 0 in case of success
 	*)
-	PROCEDURE Install* (uart: LONGINT; base: ADDRESS; inputClock: LONGINT; VAR res: LONGINT);
+	PROCEDURE Install* (uart: LONGINT; base: ADDRESS; inputClock: LONGINT; VAR res: WORD);
 	VAR ctl: UartController;
 	BEGIN
 		PsUartMin.Install(uart, base, inputClock, res);
@@ -213,7 +213,7 @@ VAR
 		stop: number of stop bits
 		res: returned error code, 0 in case of success
 	*)
-	PROCEDURE Open*(uart: UartController; bps, data, parity, stop: LONGINT; VAR res: LONGINT);
+	PROCEDURE Open*(uart: UartController; bps, data, parity, stop: LONGINT; VAR res: WORD);
 	VAR n: LONGINT;
 	BEGIN
 		IF uart.open THEN res := PsUartMin.PortInUse; RETURN; END;
@@ -312,7 +312,7 @@ VAR
 		propagate: TRUE for flushing the TX FIFO buffer
 		res: error code, 0 in case of success
 	*)
-	PROCEDURE SendChar*(uart: UartController; ch: CHAR; propagate: BOOLEAN; onBusy: PsUartMin.BusyLoopCallback; VAR res: LONGINT);
+	PROCEDURE SendChar*(uart: UartController; ch: CHAR; propagate: BOOLEAN; onBusy: PsUartMin.BusyLoopCallback; VAR res: WORD);
 	BEGIN
 		(*! for the moment just write directly to the FIFO *)
 		res := 0;
@@ -332,7 +332,7 @@ VAR
 	(**
 		Send data to the UART
 	*)
-	PROCEDURE Send*(uart: UartController; CONST buf: ARRAY OF CHAR; offs, len: LONGINT; propagate: BOOLEAN; onBusy: PsUartMin.BusyLoopCallback; VAR res: LONGINT);
+	PROCEDURE Send*(uart: UartController; CONST buf: ARRAY OF CHAR; offs, len: LONGINT; propagate: BOOLEAN; onBusy: PsUartMin.BusyLoopCallback; VAR res: WORD);
 	VAR
 		bufWrPos, n: LONGINT;
 	BEGIN
@@ -419,7 +419,7 @@ VAR
 
 		Remarks: blocks until a character is available
 	*)
-	PROCEDURE ReceiveChar*(uart: UartController; onBusy: PsUartMin.BusyLoopCallback; VAR res: LONGINT): CHAR;
+	PROCEDURE ReceiveChar*(uart: UartController; onBusy: PsUartMin.BusyLoopCallback; VAR res: WORD): CHAR;
 	VAR
 		buf: ARRAY 1 OF CHAR;
 		len: LONGINT;
@@ -431,7 +431,7 @@ VAR
 	(**
 		Receive data from the UART
 	*)
-	PROCEDURE Receive*(uart: UartController; VAR buf: ARRAY OF CHAR; offs, size, min: LONGINT; VAR len: LONGINT; onBusy: PsUartMin.BusyLoopCallback; VAR res: LONGINT);
+	PROCEDURE Receive*(uart: UartController; VAR buf: ARRAY OF CHAR; offs, size, min: LONGINT; VAR len: LONGINT; onBusy: PsUartMin.BusyLoopCallback; VAR res: WORD);
 	VAR
 		bufRdPos, n: LONGINT;
 	BEGIN

+ 8 - 8
source/Zynq.PsUartMin.Mod

@@ -177,7 +177,7 @@ TYPE
 		txwm*: LONGINT;
 	END;
 
-	BusyLoopCallback* = PROCEDURE{DELEGATE}(VAR res: LONGINT): BOOLEAN;
+	BusyLoopCallback* = PROCEDURE{DELEGATE}(VAR res: WORD): BOOLEAN;
 
 VAR
 	uarts: ARRAY NumUarts OF UartRegisters;
@@ -191,7 +191,7 @@ VAR
 		inputClock: controller input clock in Hz
 		res: returned error code, 0 in case of success
 	*)
-	PROCEDURE Install* (uart: LONGINT; base: ADDRESS; inputClock: LONGINT; VAR res: LONGINT);
+	PROCEDURE Install* (uart: LONGINT; base: ADDRESS; inputClock: LONGINT; VAR res: WORD);
 	BEGIN
 		IF (uart < 0) OR (uart >= LEN(uarts)) THEN
 			res := NoSuchPort; RETURN;
@@ -259,7 +259,7 @@ VAR
 	(*
 		Setup baudrate in bps
 	*)
-	PROCEDURE SetBps*(uart: UartRegisters; baudrate: LONGINT; VAR res: LONGINT): BOOLEAN;
+	PROCEDURE SetBps*(uart: UartRegisters; baudrate: LONGINT; VAR res: WORD): BOOLEAN;
 	VAR
 		i, clock: LONGINT;
 		valBAUDDIV, valBRGR, calcBaudrate, baudError: LONGINT;
@@ -333,7 +333,7 @@ VAR
 	(**
 		Set number of data bits
 	*)
-	PROCEDURE SetDataBits*(uart: UartRegisters; dataBits: LONGINT; VAR res: LONGINT): BOOLEAN;
+	PROCEDURE SetDataBits*(uart: UartRegisters; dataBits: LONGINT; VAR res: WORD): BOOLEAN;
 	VAR reg: SET;
 	BEGIN
 		CASE dataBits OF
@@ -353,7 +353,7 @@ VAR
 	(**
 		Setup parity check type
 	*)
-	PROCEDURE SetParity*(uart: UartRegisters; parityType: LONGINT; VAR res: LONGINT): BOOLEAN;
+	PROCEDURE SetParity*(uart: UartRegisters; parityType: LONGINT; VAR res: WORD): BOOLEAN;
 	VAR reg: SET;
 	BEGIN
 		CASE parityType OF
@@ -375,7 +375,7 @@ VAR
 	(**
 		Setup number of stop bits
 	*)
-	PROCEDURE SetStopBits*(uart: UartRegisters; stopBits: LONGINT; VAR res: LONGINT): BOOLEAN;
+	PROCEDURE SetStopBits*(uart: UartRegisters; stopBits: LONGINT; VAR res: WORD): BOOLEAN;
 	VAR reg: SET;
 	BEGIN
 		CASE stopBits OF
@@ -399,7 +399,7 @@ VAR
 		propagate: TRUE for flushing the TX FIFO buffer
 		res: error code, 0 in case of success
 	*)
-	PROCEDURE SendChar*(uart: UartRegisters; ch: CHAR; propagate: BOOLEAN; onBusy: BusyLoopCallback; VAR res: LONGINT);
+	PROCEDURE SendChar*(uart: UartRegisters; ch: CHAR; propagate: BOOLEAN; onBusy: BusyLoopCallback; VAR res: WORD);
 	BEGIN
 		(* Wait until TX FIFO is not full *)
 		WHILE (XUARTPS_CR_TX_EN IN uart.cr) & (XUARTPS_SR_TXFULL IN uart.sr) DO
@@ -425,7 +425,7 @@ VAR
 
 		Remarks: blocks until a character is available
 	*)
-	PROCEDURE ReceiveChar*(uart: UartRegisters; onBusy: BusyLoopCallback; VAR res: LONGINT): CHAR;
+	PROCEDURE ReceiveChar*(uart: UartRegisters; onBusy: BusyLoopCallback; VAR res: WORD): CHAR;
 	BEGIN
 		(* wait until data is available *)
 		WHILE (XUARTPS_CR_RX_EN IN uart.cr) & (XUARTPS_SR_RXEMPTY IN uart.sr) DO

+ 1 - 1
source/Zynq.SdControllers.Mod

@@ -25,7 +25,7 @@ TYPE
 
 		PROCEDURE & Init (base: ADDRESS; int: LONGINT; clock: HUGEINT);
 		VAR
-			result: LONGINT;
+			result: WORD;
 		BEGIN
 			NEW(hc);
 			Sd.InitHostController(hc, base);