GE-115 Emulator
An Emulator of the General Electrics GE-115 computer
reader.h
Go to the documentation of this file.
1#ifndef READER
2#define READER
3
4#include <stdint.h>
5
6#include "transcode.h" /* enum transcode_mode (the CPU-selected read mode) */
7
8struct ge;
9
10/*
11 * The integrated card reader on connector 2 / channel 1, modelled signal-by-
12 * signal against the COCA connector (see docs/signals.md). The data path
13 * (lu08/fini/data) is the working base; the remaining 1-bit fields are the
14 * other COCA pins, each a discrete modelled wire (reader->CPU status and
15 * CPU->reader command/mode). They are added inert and wired up phase by phase.
16 */
18 /* --- data path (base) --- */
19 uint8_t lu08:1; /* LU08N : character-ready strobe */
20 uint8_t fini:1; /* FININ : end-of-read, raised with the last char */
21 uint8_t data; /* LU00N-LU07N : the transcoded character byte */
22
23 /* --- reader -> CPU status lines --- */
24 uint8_t fiden:1; /* FIDEN : end-of-sequence (record fully read) */
25 uint8_t lupor:1; /* LUPOR : reader free / ready (= signal LUPO1) */
26 uint8_t luren:1; /* LUREN : error (transcoder / jam) */
27 uint8_t lusen:1; /* LUSEN : out-of-service */
28 uint8_t lenon:1; /* LENON : "not operable" condition (LENOB/LENO) */
29 uint8_t bi20:1; /* BI20 : binary-read 2nd-nibble aux clock */
30 uint8_t pom01:1; /* POM01 : binary-mode (by-pass) indicator */
31 uint8_t picon:1; /* PICON : first-column check */
32
33 /* --- CPU -> reader command / mode lines (latched on this side) --- */
34 uint8_t tu00:1; /* TU00N : read-strobe clock for RE data */
35 uint8_t tu03:1; /* TU03N : card-feed / advance clock */
36 uint8_t rifan:1; /* RIFAN : card reject / eject */
37 uint8_t regen:1; /* REGEN : general clear / reset */
38 uint8_t sesen:1; /* SESEN : put-in-manual */
39 uint8_t cocon:1; /* COCON : mode-select clock (latches the decode) */
40 uint8_t mode_n001:1;/* N001 : normal-mode decode */
41 uint8_t mode_n002:1;/* N002 */
42 uint8_t mode_debi:1;/* DEBI : binary-read (by-pass) decode */
43 uint8_t mode_mi01:1;/* MI01 : mixed-mode decode */
44 uint8_t mode_mi02:1;/* MI02 */
45
46 /* Read mode the CPU has selected, latched by COCON. While active_valid==0
47 * (the CPU has not driven a mode) the cardreader peripheral falls back to
48 * its harness-registered transcode mode; once the CPU issues a COCON latch
49 * active_mode takes over. */
51 uint8_t active_valid:1;
52};
53
54void reader_setup_to_send(struct ge *ge, uint8_t data, uint8_t end);
55void reader_clear_sending(struct ge *ge);
56
57void reader_send_tu00(struct ge *);
58void reader_send_tu10(struct ge *);
59
60uint8_t reader_get_LU08(struct ge *);
61uint8_t reader_get_LUPO1(struct ge *);
62uint8_t reader_get_FINI1(struct ge *);
63
65 const char *name;
66
67 uint8_t data;
68
69 uint8_t mare:1;
70 uint8_t te10:1;
71 uint8_t te20:1;
72 uint8_t te30:1;
73 uint8_t fine:1;
74};
75
76void connector_setup_to_send(struct ge *, struct ge_connector *, uint8_t, uint8_t);
77void connector_send_tu00(struct ge *, struct ge_connector *);
79
80uint8_t connector_get_MARE(struct ge_connector *);
81uint8_t connector_get_TE10(struct ge_connector *);
82uint8_t connector_get_TE20(struct ge_connector *);
83uint8_t connector_get_TE30(struct ge_connector *);
84uint8_t connector_get_FINE(struct ge_connector *);
85
86#endif
87
void connector_send_tu00(struct ge *, struct ge_connector *)
Definition reader.c:216
void reader_setup_to_send(struct ge *ge, uint8_t data, uint8_t end)
Definition reader.c:64
uint8_t connector_get_TE20(struct ge_connector *)
Definition reader.c:165
uint8_t reader_get_LU08(struct ge *)
Definition reader.c:127
uint8_t connector_get_FINE(struct ge_connector *)
Definition reader.c:177
uint8_t reader_get_FINI1(struct ge *)
Definition reader.c:147
void connector_setup_to_send(struct ge *, struct ge_connector *, uint8_t, uint8_t)
Definition reader.c:183
uint8_t connector_get_TE30(struct ge_connector *)
Definition reader.c:171
void reader_send_tu10(struct ge *)
Definition reader.c:109
uint8_t reader_get_LUPO1(struct ge *)
Definition reader.c:140
void reader_clear_sending(struct ge *ge)
Definition reader.c:98
uint8_t connector_get_TE10(struct ge_connector *)
Definition reader.c:159
uint8_t connector_get_MARE(struct ge_connector *)
Definition reader.c:153
void reader_send_tu00(struct ge *)
Definition reader.c:22
void connector_clear_sending(struct ge_connector *)
Definition reader.c:207
uint8_t te20
Definition reader.h:71
uint8_t mare
Definition reader.h:69
uint8_t data
Definition reader.h:67
uint8_t te30
Definition reader.h:72
uint8_t fine
Definition reader.h:73
const char * name
Definition reader.h:65
uint8_t te10
Definition reader.h:70
uint8_t mode_debi
Definition reader.h:42
enum transcode_mode active_mode
Definition reader.h:50
uint8_t mode_mi01
Definition reader.h:43
uint8_t mode_n001
Definition reader.h:40
uint8_t active_valid
Definition reader.h:51
uint8_t mode_n002
Definition reader.h:41
uint8_t mode_mi02
Definition reader.h:44
The entire state of the emulated system, including registers, memory, peripherals and timings.
Definition ge.h:96
transcode_mode
Definition transcode.h:18