这个页面包含一个参考资料列表按主题分开。 大多数ReactOS相关开发和其他一些相关微软(C)技术。 他们一直按类别分开,这样你就可以更好的选择你感兴趣的材料。 一些重复的链接可能发生如果需要把它们分为两类出现。

可以开始编程操作系统之前,您需要知道如何编程。 以下是引用和教程,可以使用它来学习不同的原则。 ReactOS主要使用C、c++和组装,我们只会讨论那些在这一节中。 汇编语言我们将介绍将英特尔或AMD和PowerPC的只有架构ReactOS代码。 c#和。 净相关事项,向下滚动。 每个引用将被列为入门,中级或高级。 编程的入门不承担任何知识,中间假设您知道如何使用语言的问题,和先进的编程中涉及到一些更复杂的主题。 一些可能不止一个,很少有人将涵盖从所有三个主题。

在线

描述网站水平
一个通用的c++教程覆盖第一个基本程序等更高级的主题模板。访问介绍/中级
本教程是巨大的。 它涵盖了一个大范围的主题在C编程和很多关注在UNIX平台上使用。 然而,在这一过程中,它还教会你很多关于C的能力和如何使用它在一个操作系统。访问介绍/中级/高级
指针是一些最棘手的事情要处理在C / c++。 本教程提供了各种技术的例子,利用它们。访问中级/高级
一个很好的参考C和c++标准库。 为了做任何实质性的甚至是微不足道的,你可能会使用标准库的东西。访问中级/高级
介绍了IBM PowerPC。 如果你从未见过的汇编代码,我建议你先学习大会像PPC RISC体系结构。 良好的PPC教程可以很难获得,但这些应该让你开始。访问中间
访问中间
访问中间
这两个是英特尔的指南汇编语言。 都有自己的长处和弱点,但他们似乎是相辅相成的。访问中间
访问中间
寄存器在英特尔架构的命名约定而RISC体系结构。 这两个引用提供他们的明细,以及如何使用它们。访问中间
访问中间
C / c++代码如何转换成汇编也是相当有趣的。 功能规范定义一个函数是如何转换成汇编代码。访问先进的
访问先进的
英特尔还维护一系列关于汇编语言编程的书。 这些东西是相当沉重,你会想要熟悉x86架构的基础之前解决。访问先进的
AMD也有一个编程的手册列表AMD64架构。访问
一个相当冗长的win32教程。 虽然不是那么深入的作品的书,这涵盖了大量的材料,是一个伟大的地方开始学习Windows API。访问中间
医师在Windows如何处理异常。 如果你想做系统编程,你需要学习它。访问先进的
Windows使用组件对象模型广泛的某些方面和写作教程在CodeProject上7部分。访问中级/高级

另请参阅

描述名称/ ISBN水平
Windows API的书。 ReactOS广泛使用win32 API为任何自己的图形应用程序以及支持各种win32应用程序写的第三方。编程窗口,第五版

国际标准图书编号1 - 57231 - 995 - x

中级/高级
使用微软基础类的书。 虽然ReactOS不支持MFC,我们可能在未来如果有人来实现它。 当然,人们必须彻底熟悉MFC。与MFC编程窗口

ISBN 1-57231-695-0

中级/高级

操作系统

本 节的目的是去接编程部分离开的地方让人们速度。 因此,链接在这里的目的是来让人们熟悉操作系统基本原理,然后介绍了Windows NT架构。 它并不打算提供链接到其他操作系统存在。 这里的引用标记作为入门,中级或高级。 然而,标签是在操作系统的知识,不是一般的计算机科学知识。 一般来说,应该在中间编程完全理解这里的介绍性的材料。 介绍性的材料往往是概念的解释。 实现开始被深度覆盖的时候,我们在中间范围。

编程的主题通常是在系统编程方面没有覆盖在上面的引用。

在线

描述网站水平
一个阻止各种各样的参考站点。 它有一个洞,但提供了一些不错的概述。访问介绍/中级/高级
一个优秀的概述和介绍操作系统背后的原则。 这个链接包含的大部分信息Minix操作系统书也有,当然不包括操作系统具体的实现,是广义的。 如果你想介绍操作系统,这是一开始的页面。访问介绍/中级
这解释了背后的原则如何计算机引导进入一个操作系统。 它没有深入研究其背后的代码,但提供的大纲。访问介绍
一个教程如何编写自己的简单的内核。 其中一些不会多大意义,除非你熟悉入门材料。访问中间
WDM驱动程序模型用于2000,XP,Vista,尽管Vista慢慢过渡。 这提供了WDM的大纲以及链接获取驱动程序开发包。访问中间
世界飞镖联合会是Windows Vista的新的驱动程序模型。 这提供了一个介绍和各种资源的链接。 同时,新的Windows驱动程序组件包括各种所需头文件系统驱动程序,将派上用场一旦ReactOS可以处理新的文件系统。访问中间
这本书的在线组件操作系统概念,这个页面有三个在线章节谈论FreeBSD,马赫,和Windows 2000。 他们是伟大的参考看看这些操作系统是如何工作的。访问中间
这是第一次的几篇文章介绍如何编写Windows驱动程序。 考虑到罕见的这样的教程,这是一个很好的起点。访问

描述名称/ ISBN水平
这本书可能是引用一个能找到学习的原则和操作系统的基础。 文本提供了一个体面的深度和今天提供了不同的操作系统使用的例子。 Windows XP上的章是特别有用的把握基础之前移动到窗口内部的书。操作系统概念,第七版

ISBN 0-471-69466-5

介绍/中级/高级
这本书涵盖了操作系统和背后的理论也在Minix检查实施。 这本书是一个不错的学习基础,立即深入研究他们是如何转换成代码。 尽管这本书涵盖基础,其实现的角度是基于微内核设计,不是当今普遍使用的单内核。操作系统:设计和实现(Minix的书)

ISBN 0-471-69466-5

介绍/中级/高级
书了解Windows操作系统。 这本书涵盖了Windows Vista和服务器2008,由亚历克斯·库前ReactOS内核开发人员。勘误表,更多的勘误表Windows内部,第五版

ISBN 0-7356-2530-1

中级/高级
书了解Windows操作系统。 这本书涵盖了2000,XP和服务器2003。勘误表Windows内部,第四版

ISBN 0-7356-1917-4

中级/高级
第三版的Windows内部系列,这本书涵盖了Windows 2000。在Microsoft Windows 2000第三版

ISBN 0-7356-1021-5


这本书详细介绍了非法内核API在Windows 2000。 即使是Windows 2000,其内容仍然是相关的每个Windows版本基本上是建立在以前的版本。 更好的是,这本书是作者发布的在线免费:http://www.rawol.com/?topic=41无证Windows 2000的秘密

ISBN 0-201-72187-2

先进的
这本书探讨了内部的Windows NT,2000年以前。无证Windows NT

ISBN 0-7645-4569-8


这本书在Windows NT和2000年本机API的细节。Windows NT / 2000,本机API参考

ISBN 1-57870-199-6

先进的
这也许是唯一的书,探讨了内部的NTFS文件系统。Windows NT系统内部文件

ISBN 1-56592-249-2

先进的
这本书是主要的参考实现win32k ReactOS开发人员使用的。 它有大量的信息和学习一本好书是Windows吸引的东西。Windows图形编程:Win32 GDI和DirectDraw

ISBN 0-13-086985-6

中级/高级
这本书涵盖的一些非法win32k内部api。 有一个很好的阅读和参考win32k子系统内部发生了什么。Windows 2000图形API,黑色的书

ISBN 1-932111-39-5

先进的
user32 DLL处理窗口消息和其他相关事项与windows API。 这本书涵盖了主要user32记录API调用。微软Windows 2000 API,超级宝典

ISBN 0-672-31933-0

中级/高级
一本关于为Windows 2000编写驱动程序。Windows 2000设备驱动程序书:一个程序员指南,第二版

ISBN 0-13-020431-5


WDM驱动程序模型用于2000,XP,Vista,尽管Vista慢慢过渡。 ReactOS”目的是为了XP兼容,我们也将实现波分复用。Microsoft Windows驱动程序编程模型,第二版

ISBN 0-7356-1803-8

先进的
世界飞镖联合会是Windows Vista的新的驱动程序模型。 微软已经绑在举10,ReactOS最终将需要实现它。发展与Windows驱动程序的驱动程序的基础

ISBN 0-7356-2374-0

先进的

net

虽 然ReactOS没有任何组件的支持。 净,这是未来的Windows应用程序编程和必须处理。 网络是一个令人印象深刻的技术,虽然不是没有自己的问题。 一些更有趣的方式使用c#的只有开始成为微软开始释放他们开发的一些技术奇点项目的一部分。 虽然这部分包括链接到一些东西还在研发,我们的主要重点将今天在生产中使用的基本原则。 与上面的编程部分不同,我们不会将介绍教程在c#和。 相反,我们将关注底层技术和概念以及它的一些更有趣的应用程序。

在线

描述网站水平
介绍MSIL的肯尼克尔是一套很不错的教程在MSIL,Visual Studio生成的字节码。 网络应用程序。 在学习MSIL不是必须学习如何使用。 净,它有点类似于学习组装为了理解c的基础文章在相反的顺序,从下到上。访问中级/高级
另一位伟大的文章由肯尼克尔,这个讨论了c++和它如何适应。 净框架。访问中级/高级
LINQ的一篇文章。访问中级/高级
一个伟大的文章讨论数据结构在c#中。 也是个好将军介绍数据结构,尽可能多的理论适用于其他语言。访问中级/高级
一篇文章如何。 净处理垃圾收集。访问
访问

Pre-NT代

操 作系统,微软离地面,16位DOS仍与我们今天,作为窗口的命令行接口。 DOS也是Windows 9 x的核心家庭,有成千上万的编写的应用程序。 应用断裂的主要原因,人们搬到2000和XP是因为DOS允许更自由访问硬件和其他系统资源。 虽然DOS本身早就过时了,它仍然是有用的知识和几个项目存在21世纪试图更新它。

早 期版本的Windows实际上只是坐在在DOS图形层。 DOS是16位操作系统,非赢得9 x和之前版本的Windows NT称为win32应用程序运行时用来运行32位应用程序。 这种使用一种技术称为铛16和32位之间的部分。 铛的方法是一个阶段进一步在Windows 9 x也直接32位的API的实现部分。

在现代版本的Windows家庭,微软有多种工具和应用程序,允许16位应用程序继续运行在32位操作系统。 这种兼容性是通过NTVDM和WOWEXEC的结合。 今天没有方法是实现ReactOS,但基础研究已经完成探索这些选项的可行性。

在线

描述网站水平
有 两个主要的开源DOS的实现。 FreeDOS试图创建一个系统完全兼容ms - dos,同时为新硬件更新它。 然而,FreeDOS也重复的一些局限性,ms - dos。 FreeDOS-32试图扩展微软创建,生产纯32位操作系统能够运行16位DOS应用程序。

FreeDOS理论上会让一个伟大的基础重新实现(DOS 7.1)的基础上 任意数量的窗口环境中可以放置。 这可能包括克隆的Windows 3所示。 x或Windows 9。 x(现在的目标放弃Freedows项目)

http://www.freedos.org/
http://freedos - 32. sourceforge.net/
即使一个人有一个DOS系统,指导使用某些有用的。http://www.nukesoft.co.uk/msdos/介绍
批处理文件基本上是命令脚本。 DOS命令行操作系统,它的数据你可以命令链组合进一个脚本,然后执行脚本。 同样,可以使用批处理文件在2000和XP做某些任务。http://home7.inet.tele.dk/batfiles/batfiles.htm中间
ecma - 234,它定义了Windows 95之前使用的API。http://www.ecma international.org/publications/standards/ecma - 234. htm

描述名称/ ISBN
虽然弃用,了解操作系统的驱动程序模型暴露了很多关于它的内核和内部结构。编写Windows VxD和设备驱动程序,第二版

ISBN 0-87930-438-3

Peitrek,马克,“Windows 95系统编程秘密”





This page contains a list of reference materials separated by topic. Most are relevant to ReactOS development and several others are related to Microsoft(C) technologies.  They have been separated by category so you can better choose what materials are of interest to you.  Some duplication of links may happen if the need to put them into two categories arose.

Contents

1 Programming

1.1.1 See also

1.1 Online

1.2 Books

2 Operating Systems

2.1 Online

2.2 Books

3 .NET

3.1 Online

4 Pre-NT Generation

4.1 Online

4.2 Books

Programming

Before you can begin programming an operating system, you need to know how to program.  The following are references and tutorials that one can use to learn various principles.  As ReactOS primarily uses C, C++, and Assembly, we will only cover those in this section.  The Assembly languages we will cover will be for Intel/AMD and PowerPC, as those are the only architectures ReactOS has code for.  For C# and .NET related matters, scroll downwards.  Each reference will be ranked as Introductory, Intermediate, or Advanced.  Introductory assumes no knowledge of programming, Intermediate assumes you know how to use the language in question, and Advanced covers some of the more tricky topics in programming.  Some may be more than one and a rare few will cover topics from all three.

Online

Description

Website

Level

A general C++ tutorial that covers the first basic program to more advanced topics like templates.    visit    Introductory / Intermediate    

This tutorial is huge.  It covers a large range of topics in C programming and focuses a lot on its use on UNIX platforms.  However, in doing so, it also teaches you a lot about what C is capable of and how it's used in an operating system.    visit    Introductory / Intermediate / Advanced    

Pointers are some of the trickiest things to work with in C/C++.   This tutorial provides examples of various techniques that take advantage of them.    visit    Intermediate / Advanced    

A very nice reference to the C and C++ Standard Libraries.  In order to do anything substantial or even trivial, you're likely to be using things from the Standard Libraries.    visit    Intermediate / Advanced    

An introduction to IBM's PowerPC.  If you've never seen assembly code before, I'd advise you start with learning the assembly for a RISC architecture like the PPC.  Good PPC tutorials can actually be hard to come by, but these should get you started.    visit    Intermediate    

visit    Intermediate    

visit    Intermediate    

These two are guides to Intel's assembly language.   Both have their strengths and weaknesses, but they seem to complement each other well.    visit    Intermediate    

visit    Intermediate    

Registers on Intel's architecture have a somewhat contrived naming convention compared to RISC architectures.  These two references provide a breakdown of what they are and how they're used.    visit    Intermediate    

visit    Intermediate    

How C/C++ code is transformed into assembly is also rather interesting.  Function conventions define how a function is transformed into assembly code.    visit    Advanced    

visit    Advanced    

Intel also maintains a series of books on assembly programming.   These things are fairly hefty and you'll want to be familiar with the basics of the x86 architecture before tackling them.    visit    Advanced    

AMD also has a list of manuals for programming on its AMD64 architecture.    visit    

A fairly verbose win32 tutorial.  While not nearly as indepth as Petzold's book, this does cover a fair amount of material and is a great place to start learning the Windows API.    visit    Intermediate    

SEH is how exceptions are handled in Windows.  If you want to do system programming, you're going to need to learn it.    visit    Advanced    

Some aspects of Windows use the Component Object Model extensively and a tutorial to to writing them in 7 parts is on CodeProject.    visit    Intermediate / Advanced    

See also

External Documentation Links

Books

Description

Name / ISBN

Level

The book for the Windows API.  ReactOS uses the win32 API extensively for any of its own graphical applications as well as support the various win32 applications written by third parties.    Programming Windows, 5th Edition

ISBN 1-57231-995-X

   Intermediate / Advanced    

The book for using the Microsoft Foundation Classes.  While ReactOS does not support MFC, we could potentially do so in the future if someone were to implement it.  Of course, one would have to be thoroughly familiar with MFC to do so.    Programming Windows with MFC

ISBN 1-57231-695-0

   Intermediate / Advanced    

Operating Systems

The intent of this section is to pick up where the programming section left off in getting people up to speed.  As such, the links here are aimed at familiarizing people with OS fundamentals and then introducing the Windows NT architecture.  It is not intended to provide links to every other operating system in existence.  The references here are tagged as Introductory, Intermediate, or Advanced.  However, the tags are in the context of operating system knowledge, not general computer science knowledge.  In general, one should be at the Intermediate for programming to fully understand the Introductory material here.  Introductory material tends to be concept explanations. By the time implementation begins being covered in depth, we're in the Intermediate range.

Programming topics here are usually in regard to systems programming not covered in the references above.

Online

Description

Website

Level

A one stop reference site of sorts.  It has a few holes, but provides some decent overviews.    visit    Introductory / Intermediate / Advanced    

An excellent overview and introduction to the principles behind operating systems.  This link contains much of the information the Minix OS book also has, but of course does not include OS specific implementations, just generalized ones.  If you want an introduction to operating systems, this is the page to start with.    visit    Introductory / Intermediate    

This explains the principles behind how a computer boots into an operating system.  It doesn't delve into the code behind it, but provides the general outline of what is going on.    visit    Introductory    

A tutorial on how to write your own simple kernel.  Some of this won't make much sense unless you're familiar with the Introductory materials.    visit    Intermediate    

WDM is the driver model used in 2000, XP, and Vista, though Vista is slowly transitioning it out.  This provides an outline of WDM as well as links to getting the Driver Development Kit.    visit    Intermediate    

WDF is the new driver model for Windows Vista.  This provides an introduction and links to various resources.  Also, the new Windows Driver Kit includes the various headers needed for filesystem drivers, which will come in handy once ReactOS can handle new filesystems.    visit    Intermediate    

The online component of the book OS Concepts, this page has three online chapters talking about FreeBSD, Mach, and Windows 2000.  They're great references for taking a peek at how these operating systems work.    visit    Intermediate    

This is the first of several articles introducing how to write Windows drivers.  Considering how rare such tutorials are, it's a good place to start.    visit    

Books

Description

Name / ISBN

Level

This book is perhaps the best reference one can find to learn the principles and fundamentals of operating systems.  The text provides a decent amount of depth and provides examples from various operating systems in use today.  The chapter on Windows XP is especially useful for grasping the basics before one moves onto the Windows Internal book.    Operating System Concepts, Seventh Edition

ISBN 0-471-69466-5

   Introductory / Intermediate / Advanced    

A book that covers the theory behind operating systems and also examines their implementation in Minix.  It's a decent book for learning the fundamentals and immediately delve into how they're transformed into code.  While this book does cover the basics, its implementation angle is based on a microkernel design, not the monolithic kernel in general use today.    Operating Systems: Design and Implementation (The Minix Book)

ISBN 0-471-69466-5

   Introductory / Intermediate / Advanced    

The book for learning about the Windows operating system.   This book covers Windows Vista and Server 2008 and was co-authored by Alex Ionescu, a former ReactOS kernel developer. errata, more errata    Windows Internals, Fifth Edition

ISBN 0-7356-2530-1

   Intermediate / Advanced    

The book for learning about the Windows operating system.  This book covers 2000, XP, and Server 2003. errata    Windows Internals, Fourth Edition

ISBN 0-7356-1917-4

   Intermediate / Advanced    

The third edition of the Windows Internals series, this book covers up to Windows 2000.    Inside Microsoft Windows 2000 Third edition

ISBN 0-7356-1021-5

   

A book that details the undocumented kernel API in Windows 2000.   Even if it is for Windows 2000, its content is still relevant as each Windows version is basically building upon previous releases.  Even better, this book was released by its author online for free: http://www.rawol.com/?topic=41    Undocumented Windows 2000 Secrets

ISBN 0-201-72187-2

   Advanced    

A book that examines the internals of Windows NT.  Pre-2000.    Undocumented Windows NT

ISBN 0-7645-4569-8

   

A book that details the native API in Windows NT and 2000.    Windows NT/2000, Native API Reference

ISBN 1-57870-199-6

   Advanced    

This is perhaps the only book that examines the internals of the NTFS file system.    Windows NT File System Internals

ISBN 1-56592-249-2

   Advanced    

This book is the primary reference used by the ReactOS developers for implementing win32k.  It has a lot of information and is a good book for learning how Windows draws things.    Windows Graphics Programming: Win32 GDI and DirectDraw

ISBN 0-13-086985-6

   Intermediate / Advanced    

This book covers some of the undocumented internal APIs in win32k. A good read and useful reference for seeing what happens inside the win32k subsystem.    Windows 2000 Graphics API, Black Book

ISBN 1-932111-39-5

   Advanced    

The user32 DLL handles windows messages and other related matters in relation with the Windows API.  This book covers primarily the documented API calls for user32.    Microsoft Windows 2000 API, Super Bible

ISBN 0-672-31933-0

   Intermediate / Advanced    

A book on writing drivers for Windows 2000.    Windows 2000 Device Driver Book: A Guide for Programmers, 2nd Edition

ISBN 0-13-020431-5

   

WDM is the driver model used in 2000, XP, and Vista, though Vista is slowly transitioning it out.  As ReactOS' aim is for XP compatibility, we will also be implementing WDM.    Programming the Microsoft Windows Driver Model, Second Edition

ISBN 0-7356-1803-8

   Advanced    

WDF is the new driver model for Windows Vista.  As Microsoft has tied in DirectX 10 to this, ReactOS will eventually need to implement it.    Developing Drivers with the Windows Driver Foundation

ISBN 0-7356-2374-0

   Advanced    

.NET

While ReactOS does not have any components to support .NET, it is the future of Windows application programming and will have to be dealt with.  .NET is a remarkable piece of technology, though not without its own issues.  Some of the more interesting ways to use C# have only begun to emerge as Microsoft begins releasing some of the technology they've developed as part of their Singularity project.  While this section does include links to some things still in R&D, our primary focus will be on the underlying principles of what is in production use today.   Unlike the programming section above, we won't bother linking intro tutorials on C# and the like.  Instead we'll focus on the underlying technologies and concepts as well as some of its more interesting applications.

Online

Description

Website

Level

The Introduction to MSIL by Kenny Kerr is a very nice set of tutorials on MSIL, the bytecode Visual Studio generates for .NET applications.  While learning MSIL is not essential to learning how to use .NET, it is somewhat analogous to learning assembly in order to understand the foundations of C.  The articles are in reverse order, bottom to top.    visit    Intermediate / Advanced    

Another great article by Kenny Kerr, this one discusses C++ and how it fits into the .NET framework.    visit    Intermediate / Advanced    

An article on LINQ.    visit    Intermediate / Advanced    

A great article talking about data structures in C#.  It's also a good general introduction to data structures, as much of the theory is applicable to other languages.    visit    Intermediate / Advanced    

An article covering how .NET handles garbage collecting.    visit    

visit    

Pre-NT Generation

The operating system that got Microsoft off the ground, the 16-bit DOS is still with us today, acting as the command line interface for Windows. DOS was also the core of the Windows 9x family, which had thousands of applications written for it. The main reason for application breakage as people moved to 2000 and XP was because DOS allowed far more freedom in accessing hardware and other system resources.  While DOS itself has long been made obsolete, knowledge of it is still useful and several projects exist trying to update it for the 21st century.

The early versions of Windows were in reality nothing more than a graphics layer sitting atop DOS.  As DOS is a 16bit OS, non Version of Windows prior to Win 9x and NT used an application runtime known as win32s to run 32bit applications. This used a technique known as thunking between the 16 and 32 bit portions.  The thunking approach was taken a stage further in Windows 9x which also implemented portions of the 32bit API's directly.

In modern versions of the Windows family, Microsoft has a variety of tools and applications that have allowed 16bit applications to continue to run on their 32bit operating systems. This compatibility is achieved through the combination of NTVDM and WOWEXEC.  Neither approach is implemented in ReactOS today, but basic research has been done to explore the viability of these options.

Online

Description

Website

Level

There are two primary open source DOS implementations. FreeDOS attempts to create a system completely compatible with MS-DOS while updating it for newer hardware.  However, FreeDOS also duplicates some of the limitations that MS-DOS had.  FreeDOS-32 attempts to expand upon what Microsoft created, producing a pure 32bit operating system capable of running 16bit DOS applications.

FreeDOS would in theory make a great foundation for reimplementation of the (DOS 7.1) base onto which any number of windowing environments could be placed. This could include clones of Windows 3.x or Windows 9.x( The target of the now abandoned Freedows project)

   http://www.freedos.org/    

http://freedos-32.sourceforge.net/    

Even if one has a DOS system to work with, guides to use it are certain useful.    http://www.nukesoft.co.uk/msdos/    Introductory    

Batch files are basically command scripts.  As DOS was a command line operating system, it figures you could chain commands together into a single script and then execute that script.  Also, batch files can be used in 2000 and XP to do certain tasks.    http://home7.inet.tele.dk/batfiles/batfiles.htm    Intermediate    

ECMA-234, which defines the API used just prior to Windows 95.    http://www.ecma-international.org/publications/standards/Ecma-234.htm    

Books

Description

Name / ISBN

Though deprecated, knowing an operating system's driver model exposes a lot about its kernel and internal architecture.    Writing Windows VxD and Device Drivers, Second Edition

ISBN 0-87930-438-3

   

Peitrek, Mark ; "Windows 95 System Programming Secrets"