Files
2024-02-19 00:25:23 -05:00

78 lines
9.2 KiB
HTML

<html><head><title>OSRC: Miscellaneous Devices </title></head>
<body BGCOLOR=#FFFFFF TEXT=#000000 LINK=#0000FF VLINK=#0000FF ALINK=#107010>
<center><font face=Verdana size=7><b>Miscellaneous Devices</b></font></center><blockquote>PIC, PIT, DMA, RTC, ..</blockquote><table width="100%" cellpadding=0 cellspacing=0 border=0>
<tr><td width="33%" align=left></td>
<td width='33%' align=center></td>
<td width='33%' align=right><font size=2>[<a href='..'>Up</a>]</font></td></tr>
</table><hr><p><ul><DL>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/ACPISpec1.0a.pdf'>Advanced Configuration &amp; Power Interface Spec</a></font><br>
<DD>"ACPI evolves the existing collection of power management BIOS code, APM APIs, PNPBIOS APIs, and so on into a well-specified power management and configuration mechanism. It provides support for an orderly transition from existing (legacy) hardware to ACPI hardware, and it allows for both mechanisms to exist in a single machine and be used as needed."<p>
<DT><font size=+1>8237 Direct Memory Access Controller (DMA)</font><br>
<ul><DL>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/8237A_DMAControllerDatasheet.pdf'>DMA Controller Chip Datasheet</a></font> - by <a href='mailto:This is the official 8237A datasheet from Intel.'>Intel Corp</a><br>
<DD>250K .PDF<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/dmaprog8237.txt'>How to program the DMA</a></font> - by <a href='mailto:nstalker@iag.net'>Breakpoint</a><br>
<DD>This is an excellent article that covers the basics of DMA, what it's used for, and applications for it. It addresses DMA in protected mode as well as memory to memory transfers...<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/DMA_RTI.txt'>How to program the DMA</a></font> - by Night Stalker<br>
<DD>This is a pretty good introduction to DMA transfers, and it touches on many of the issues that are likely to trip a newcomer up. Has a nice description of the flags, as well as C/Asm code for programming the chip. Unfortunately, it seems my copy is formatted strangely. If anyone runs across a better version, please send it my way!<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/DMA_API.txt'>Virtual DMA Services (VDS)</a></font><br>
<DD>"DOS device drivers which perform DMA, program a controller with an address of a buffer region. All software running in protected mode environments, whether running in virtual 8086 mode or in protected mode under a DOS extender, usually can not determine the physical address of their DMA region. The DMA controller also places further restrictions upon acceptable DMA regions: they must be in contiguous physical memory, on XTs they must be in the first 1Mb of memory and on XTs, ATs and compatibles they must not cross 64Kb or 128Kb alignment boundaries. These services provide the necessary support to allow a device driver or application program to obtain the necessary information to program a DMA transfer using either the on board DMA controller or a busmaster DMA controller."<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/DMA_VLA.txt'>Intro to DMA</a></font> - by Draeden of VLA<br>
<DD>Not much of an intro, this doc gives a short overview of how to do DMA transfers as well as example source code for working with it.<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/DMAPORTS.txt'>8237 Port Reference</a></font><br>
<DD>This is a simple reference for the IO ports on a DMA chip. Includes breakouts of all of the useful bits in the packed registers.<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/DMA_CODE.asm'>DMA Example Code</a></font><br>
<DD>Assembly language library that provides C callable functions for programming the DMA.<p>
</DL></ul>
<DT><font size=+1>8259 Programmable Interrupt Controller (PIC)</font><br>
<ul><DL>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/8259A_PIC_Datasheet.pdf'>8259A PIC Data Sheet</a></font> - by Intel<br>
<DD>This is the official datasheet for the PIC, straight from Intel.<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/CP_interupt.pdf'>Using Interrupts</a></font> - by <a href='mailto:Craig.Peacock@senet.com.au'>Craig Peacock</a><br>
<DD>"A dedicated document exploring the use of interrupts on your PC. Includes information on the IRQ 2 to IRQ 9 Re-direction, the 8259 and compatible Programmable Interrupt Controller (PIC), Initialization Command Words (ICW's), Operation, Command Words (OCW's), Interrupt Service Routines (ISR), Interrupt vectors and using interrupts under the C environment." From <a href="http://www.senet.com.au/~cpeacock/">Craig's Page</a>.<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/8259pic2.txt'>8259A Interrupt Controller on the PC</a></font> - by <a href='mailto:chris@locomotive.com'>Chris Hall</a><br>
<DD>A high level discussion of what the PIC is and what it does. This file won't save you from having to look at the data sheet or a reference (like the one below) as well... it's an explanation of what those guys at Intel are trying to say in the specs, and how the 8259 is used in a PC. A nice cleaned up PDF version of this document <a href="/sabre/os/files/MiscHW/8259pic.pdf">is right here</a> (by Cornelis Frank).<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/8259pic.txt'>PIC Port Reference</a></font> - by <a href='mailto:Coridon.Henshaw@f820.n250.z1.fidonet.org'>Coridon Henshaw</a><br>
<DD>This document serves as a reference for all of the ports available on the PIC chip.<p>
</DL></ul>
<DT><font size=+1>8253 Programmable Interval Timer (PIT)</font><br>
<ul><DL>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/PIT.txt'>8253 Programmable Interval Timer</a></font> - by <a href='mailto:pcgpe@geocities.com'>Mark Feldman</a><br>
<DD>This file describes how to program the PC's PIT chip. This chip is used to generate clock interrupts that can be used by the OS for context switching and other fun stuff.<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/TIMER2.txt'>The Timer!!!</a></font> - by 'Mitch'<br>
<DD>This article describes the system timer and gives assembly sample code for playing with it. It also describes the settings of the flags register...<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/TIMER.c'>Timer Example Source</a></font> - by <a href='mailto:rer@wlv.iipo.gtegsc.com'>Ethan Rohrer</a><br>
<DD>"Ok, here is some code I wrote a while ago, and touched up a little recently as someone else needed it. As you may have noticed by the line count, it is VERY wordy...hopefully some of it is useful.<p>This code returns a time value in units of 838 nanoseconds, and I have found it quite useful. Even though the examples I provide are for fixed-frame-rate games, I have used this in a crude ray-casting (yuk) demo I wrote a while back which will run as fast as your CPU (or monitor/video) will allow."<p>
</DL></ul>
<DT><font size=+1>Other Timing Related Devices</font><br>
<ul><DL>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/CMOSTimer.html'>Using the 1024Hz CMOS Timer Interrupt</a></font> - by <a href='mailto:pcgpe@geocities.com'>Mark Feldman</a><br>
<DD>This file describes how to program for the Fixed Frequency CMOS timer interrupt. This timer can be very useful, because it operates independantly of the PIT chip and has a dependable frequency.<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/RealtimeClockFAQ.txt'>Real Time Clock / CMOS Setup Reference</a></font> - by Tom Przeor<br>
<DD>"AT model was the first in IBM PC family to keep track of time while switched off. The designers used Motorola MC146818 Real Time Clock (RTC from now on) chip. This chip provides clock and calendar functions, few registers to program the chip itself and some 50 bytes of general purpose memory." - This is a great article that talks about the CMOS RTC chip. It covers DOS interrupt access AND direct port access!<p>
<DT><font size=+1><a href='http://www.nondot.org/sabre/os/files/MiscHW/RealTimeClock.txt'>MC 146818 Real Time Clock</a></font> - by 'Chris'<br>
<DD>This file documents the IO ports and DOS interrupt interface the the AT Real Time Clock chip. This is useful as a reference for the chip.<p>
</DL></ul>
</DL></ul>
<hr>
<TABLE ALIGN=RIGHT BORDER=0><TR><TD><center>
Copyright &copy; 1995-2002 <i><a href='mailto:sabre@nondot.org'>Chris Lattner</a></i><br>
This page last modified:11/05/03<br><a href='..'>Go up a level</a><br>
</center></TD></TR></TABLE>
<font size=-1>
[about] [faq]
[<a href='/sabre/os/articles/../Updates/'>updates</a>]
[<a href='/sabre/os/articles/../Stats/'>stats</a>]
[<a href='/sabre/os/articles/../AuthorRecognition.html'>author recognition</a>]
[<a href='/sabre/os/articles/../submit/'>contributing</a>]
[<a href='/sabre/os/articles/PendingQueue/'>pending submissions</a>]
[feedback]
[<a href='mailto:sabre@nondot.org'>email</a>]
[<a href='../'>up</a>]
</font><p>
<font size=-1>
<font color=#FF0000>(new!)</font> sections have been updated in the last week...
<font color=#808000>(recent)</font> sections have been updated in the last two weeks...<br>
</font>