This App demonstrates how to generate a periodic mode 2 interrupt using a Z80 CTC.
The program configures a CTC to generate a mode 2 interrupt every 5 milliseconds. The interrupt routine increments a counter upon each interrupt, thus counting up in 5-millisecond increments.
The program then monitors the counter and outputs a ‘*’ character to the terminal each time it detects that the counter has incremented 200 times.
This is a simple program that does not need to account for such things as missing the counter reaching 200 due to it not looking within every 5 millisecond period. A general-purpose solution would need to be more robust.
CTC channel 1 is set to generate an interrupt every 5 ms from a 7.3728 MHz input clock. The prescaler is 256 and the timer reload value is 144. The interrupt frequency is therefore 7372800 / 256 / 144 = 200 Hz.
The interrupt vector table starts at 0x8200 and is used as follows:
0x8200-8201 Interrupt vector for CTC channel 0
0x8202-8203 Interrupt vector for CTC channel 1
0x8204-8205 Interrupt vector for CTC channel 2
0x8206-8207 Interrupt vector for CTC channel 3
Recommended for Z80 processors |
Requirements: Small Computer Monitor (SCM) v1.0 or later Z80 processor |
SCMon_CTC_Mode_2_Demo.hex (code starts at 8000) |
Version 1.0 (2022-01-30) |
Source code |
SCMon_CTC_Mode_2_Demo.asm |
Version 1.0 (2022-01-30) |
Below is an example of the terminal output when loading and running the App.
Small Computer Monitor - RC2014 * <<< send hex file here >>> *Ready * *g8000 ***********