doc/Timers.txt Copyright (C) 2015-2017 Mikael Pettersson This file is part of pdp10-tools. pdp10-tools is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. pdp10-tools is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with pdp10-tools. If not, see . PDP10 Timers ============ PDP6 / KA10 / KI10 ------------------ - there is a clock tied to the AC power line frequency (50 or 60 Hz) - the clock is part of the "processor conditions" - CONO APR,E allows the clock interrupt to be enabled or disabled, and the entire group of processor conditions to be assigned an interrupt priority level - on KI10, the clock has its own interrupt priority level assignment - on PDP6 and KA10, the clock shares interrupt priority level with the other processor conditions - CONI APR,E allows the current state of the processor conditions to be inspected - KI10 also has a "timer", but it functions like a watchdog and is not usable as a clock KL10 ---- - 1 MHz time base, recorded in two words in the EPT - 12-bit 100 kHz interval timer able to raise interrupts with programmable period - CONO MTR,E assigns interrupt level to the interval timer, and enables or disables the time base - CONO TIM,E assigns interrupt period to the interval timer, and enables or disables it - CONI TIM,E reads the current contents of the interval timer, as well as its configuration data - KL10 also has a "metering" system, similar to programmable performance monitoring counters KS10/KD10 --------- - a 12-bit hardware millisecond counter, running at 4.1 MHz, overflow represents just under 1 ms - a "time base" doubleword (36+35 bits) in "the workspace", with the low 12 bits corresponding to the hardware counter - an "interval" word in "the workspace" able to represent intervals up to 2^23 ms (almost 140 minutes) - WRTIM writes a doubleword to the time base (clearing the low 12 bits) - RDTIM reads the time base, adds the hardware counter, and writes a doubleword - WRINT writes a word to the interval register - RDINT reads the interval register and writes a word - WRAPR allows the interval done interrupt to be enabled, if so it shares priority level with several other "system conditions" Jupiter/KC10 ------------ - 12-bit 100 kHz interval timer able to raise interrupts with programmable period, identical to KL10 - WRTMB E similar to KL10 CONO MTR,E - WRINT E equivalent to KL10 CONO TIM,E - RDINT E equivalent to KL10 CONI TIM,E - doubleword timebase, updated via a 16 bits 1usec hardware counter XKL-1 / Toad-1 -------------- - interval timer: 8-bit hardware counter incremented every 128 usec, on overflow signals interrupt and reloads the interval (between 1 and 127, inclusive) - WRITM E loads a new interval, assigns priority level, and optionally clears the timer - interrupt vectors via an emulated XPCW using locations 100-103 in the EPT - RDITM E reads the state of the timer (except for its current count) - time base: a 60-bit count updated via a 16 bit 500 ns (2 MHz) hardware counter - RDTIME E reads the time base as a doubleword - WRTIME E writes a doubleword to the time base, except for the bits corresponding to the hardware counter - looks Jupiter-like - watchdog: a hardware decrementer with 32.8 millisecond intervals, except when the processor is halted or the watchdog is disabled (via WCTRLF E) - WRKPA Y writes 18-bit immediate to the decrementer - if the decrementer reaches zero, it signals a "keep-alive" interrupt which is very much like an NMI