blink cursor (#9)

This commit is contained in:
Stephen Crane 2023-09-27 13:55:10 +01:00 committed by GitHub
parent 48529fae16
commit f2abbe9dfd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 12 deletions

View File

@ -34,7 +34,7 @@ void reset() {
io.status("Reset failed");
return;
}
io.files.start();
io.start();
#if defined(KRUSADER)
io.status("Krusader: F000R / Basic: E000R");
#else

25
io.cpp
View File

@ -1,5 +1,4 @@
#include <Stream.h>
#include <stdint.h>
#include <Arduino.h>
#include <memory.h>
#include <display.h>
#include <serialio.h>
@ -26,6 +25,28 @@ void io::reset() {
PIA::reset();
}
static io *i;
const int TICK_FREQ = 2;
bool io::start() {
i = this;
timer_create(TICK_FREQ, io::on_tick);
return files.start();
}
void IRAM_ATTR io::on_tick() {
static int tick = 0;
tick = ++tick % 3;
i->cursor(tick < 2);
}
void io::cursor(bool on) {
draw(on? '_': ' ', c, r);
}
void io::load() {
if (files.more()) {
_loading = true;

23
io.h
View File

@ -5,18 +5,22 @@ class io: public Memory::Device, public Display, Keyboard, public PIA {
public:
io(filer &files): Memory::Device(Memory::page_size), files(files) {}
virtual void reset();
virtual void down(uint8_t);
virtual void up(uint8_t);
void reset();
bool start();
virtual void operator=(uint8_t b) { PIA::write(_acc, b); }
virtual operator uint8_t() { return PIA::read(_acc); }
static void on_tick();
virtual void checkpoint(Stream &);
virtual void restore(Stream &);
void down(uint8_t);
void up(uint8_t);
virtual void write_portb(uint8_t);
virtual uint8_t read_cra();
void operator=(uint8_t b) { PIA::write(_acc, b); }
operator uint8_t() { return PIA::read(_acc); }
void checkpoint(Stream &);
void restore(Stream &);
void write_portb(uint8_t);
uint8_t read_cra();
void load();
filer &files;
@ -25,6 +29,7 @@ public:
static const uint8_t COLS = 40;
private:
void cursor(bool on);
void display(uint8_t);
void draw(char, int, int);
void enter(uint8_t);