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"); io.status("Reset failed");
return; return;
} }
io.files.start(); io.start();
#if defined(KRUSADER) #if defined(KRUSADER)
io.status("Krusader: F000R / Basic: E000R"); io.status("Krusader: F000R / Basic: E000R");
#else #else

25
io.cpp
View File

@ -1,5 +1,4 @@
#include <Stream.h> #include <Arduino.h>
#include <stdint.h>
#include <memory.h> #include <memory.h>
#include <display.h> #include <display.h>
#include <serialio.h> #include <serialio.h>
@ -26,6 +25,28 @@ void io::reset() {
PIA::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() { void io::load() {
if (files.more()) { if (files.more()) {
_loading = true; _loading = true;

23
io.h
View File

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