GE-115 Emulator
An Emulator of the General Electrics GE-115 computer
Data Structures | Macros | Functions
printer.c File Reference
#include "printer.h"
#include <stdlib.h>
#include <string.h>
#include "log.h"
#include "gecode.h"

Go to the source code of this file.

Data Structures

struct  printer_ctx
 

Macros

#define STALL_THRESHOLD   256
 
#define PRINT_CMD_IS_PUT(cmd)   ((cmd) & 0x80)
 
#define PRINT_LEN_MAX   256
 
#define KBD_CMD_LINE   0x40
 
#define KBD_CMD_CHAR   0x41
 
#define LP_CMD_WRITE   0x42
 
#define IS_OUTPUT_CMD(cmd)   (PRINT_CMD_IS_PUT(cmd) || (cmd) == LP_CMD_WRITE)
 
#define STDIO_STATUS_ADDR   0x0030
 
#define STDIO_COUNT_ADDR   0x0032
 
#define LP_CMD_SINGLE_SPACE   0x2E
 
#define LP_CMD_TRIPLE_SPACE   0x5A
 

Functions

static void store16 (struct ge *ge, uint16_t addr, uint16_t value)
 
static void printer_capture_char (struct ge_integrated_printer *p, char c)
 
static void printer_capture_breaks (struct ge_integrated_printer *p, int count)
 
static void printer_capture_control (struct ge_integrated_printer *p, uint8_t cmd)
 
static int kbd_ready (const struct ge_integrated_printer *p)
 
static int kbd_has_complete_line (const struct ge_integrated_printer *p)
 
static uint8_t kbd_pop (struct ge_integrated_printer *p)
 
static int service_input_line (struct ge *ge, uint16_t buf, int len)
 
static int service_input_char (struct ge *ge, uint16_t buf, int len)
 
static int input_order_ready (struct ge *ge, uint8_t cmd)
 
static int in_channel2_print_wait (struct ge *ge)
 
static int printer_on_clock (struct ge *ge, void *opaque)
 
static int printer_deinit (struct ge *ge, void *opaque)
 
static void printer_sink (struct ge *ge, struct ge_channel *ch, uint8_t c)
 
int printer_register (struct ge *ge)
 
void printer_begin_output (struct ge *ge, uint16_t buffer, int length, int line_mode)
 
void printer_feed_key (struct ge *ge, uint8_t c)
 
int printer_output_len (struct ge *ge)
 
const char * printer_output (struct ge *ge)
 
void printer_output_clear (struct ge *ge)
 

Macro Definition Documentation

◆ IS_OUTPUT_CMD

#define IS_OUTPUT_CMD (   cmd)    (PRINT_CMD_IS_PUT(cmd) || (cmd) == LP_CMD_WRITE)

Definition at line 68 of file printer.c.

◆ KBD_CMD_CHAR

#define KBD_CMD_CHAR   0x41

Definition at line 58 of file printer.c.

◆ KBD_CMD_LINE

#define KBD_CMD_LINE   0x40

Definition at line 57 of file printer.c.

◆ LP_CMD_SINGLE_SPACE

#define LP_CMD_SINGLE_SPACE   0x2E

Definition at line 72 of file printer.c.

◆ LP_CMD_TRIPLE_SPACE

#define LP_CMD_TRIPLE_SPACE   0x5A

Definition at line 73 of file printer.c.

◆ LP_CMD_WRITE

#define LP_CMD_WRITE   0x42

Definition at line 67 of file printer.c.

◆ PRINT_CMD_IS_PUT

#define PRINT_CMD_IS_PUT (   cmd)    ((cmd) & 0x80)

Definition at line 55 of file printer.c.

◆ PRINT_LEN_MAX

#define PRINT_LEN_MAX   256

Definition at line 56 of file printer.c.

◆ STALL_THRESHOLD

#define STALL_THRESHOLD   256

Definition at line 42 of file printer.c.

◆ STDIO_COUNT_ADDR

#define STDIO_COUNT_ADDR   0x0032

Definition at line 71 of file printer.c.

◆ STDIO_STATUS_ADDR

#define STDIO_STATUS_ADDR   0x0030

Definition at line 70 of file printer.c.

Function Documentation

◆ in_channel2_print_wait()

static int in_channel2_print_wait ( struct ge ge)
static

Definition at line 182 of file printer.c.

◆ input_order_ready()

static int input_order_ready ( struct ge ge,
uint8_t  cmd 
)
static

Definition at line 169 of file printer.c.

◆ kbd_has_complete_line()

static int kbd_has_complete_line ( const struct ge_integrated_printer *  p)
static

Definition at line 114 of file printer.c.

◆ kbd_pop()

static uint8_t kbd_pop ( struct ge_integrated_printer *  p)
static

Definition at line 123 of file printer.c.

◆ kbd_ready()

static int kbd_ready ( const struct ge_integrated_printer *  p)
static

Definition at line 109 of file printer.c.

◆ printer_begin_output()

void printer_begin_output ( struct ge ge,
uint16_t  buffer,
int  length,
int  line_mode 
)

Definition at line 373 of file printer.c.

◆ printer_capture_breaks()

static void printer_capture_breaks ( struct ge_integrated_printer *  p,
int  count 
)
static

Definition at line 89 of file printer.c.

◆ printer_capture_char()

static void printer_capture_char ( struct ge_integrated_printer *  p,
char  c 
)
static

Definition at line 81 of file printer.c.

◆ printer_capture_control()

static void printer_capture_control ( struct ge_integrated_printer *  p,
uint8_t  cmd 
)
static

Definition at line 95 of file printer.c.

◆ printer_deinit()

static int printer_deinit ( struct ge ge,
void *  opaque 
)
static

Definition at line 329 of file printer.c.

◆ printer_feed_key()

void printer_feed_key ( struct ge ge,
uint8_t  c 
)

Definition at line 383 of file printer.c.

◆ printer_on_clock()

static int printer_on_clock ( struct ge ge,
void *  opaque 
)
static

Definition at line 197 of file printer.c.

◆ printer_output()

const char * printer_output ( struct ge ge)

Definition at line 398 of file printer.c.

◆ printer_output_clear()

void printer_output_clear ( struct ge ge)

Definition at line 403 of file printer.c.

◆ printer_output_len()

int printer_output_len ( struct ge ge)

Definition at line 393 of file printer.c.

◆ printer_register()

int printer_register ( struct ge ge)

Definition at line 349 of file printer.c.

◆ printer_sink()

static void printer_sink ( struct ge ge,
struct ge_channel ch,
uint8_t  c 
)
static

Definition at line 341 of file printer.c.

◆ service_input_char()

static int service_input_char ( struct ge ge,
uint16_t  buf,
int  len 
)
static

Definition at line 152 of file printer.c.

◆ service_input_line()

static int service_input_line ( struct ge ge,
uint16_t  buf,
int  len 
)
static

Definition at line 130 of file printer.c.

◆ store16()

static void store16 ( struct ge ge,
uint16_t  addr,
uint16_t  value 
)
static

Definition at line 75 of file printer.c.