mirror of
https://github.com/jscrane/Apple1.git
synced 2025-01-17 21:30:24 +00:00
blink cursor (#9)
This commit is contained in:
parent
48529fae16
commit
f2abbe9dfd
@ -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
25
io.cpp
@ -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
23
io.h
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user