Skip to content

Commit 682c003

Browse files
committed
Merge in owen's changes. Thanks!
1 parent 96e485f commit 682c003

File tree

4 files changed

+62
-38
lines changed

4 files changed

+62
-38
lines changed

Makefile.zx-rs232

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)
1010
DEPS := $(OBJS:.o=.d)
1111

1212
CFLAGS=+zx -D__SPECTRUM__ -D__RS232__
13-
LDFLAGS=-lndos -lm -lrs232if1 -create-app
13+
LDFLAGS=-lndos -lm -lrs232plus -create-app
1414

1515
INC_DIRS := $(shell find $(SRC_DIRS) -type d)
1616
INC_FLAGS := $(addprefix -I,$(INC_DIRS))

src/io.c

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@ struct hostent *he;
2626
char host_name[32];
2727
#endif
2828

29+
2930
char io_initialized=0;
31+
extern unsigned char is_extend; //bring in is_extend for borders
3032

3133
void io_init(void)
3234
{
3335
#ifdef __RS232__
34-
rs232_params(RS_BAUD_4800|RS_STOP_1|RS_BITS_8,RS_PAR_NONE); // Bauds tested 1200[/] 2400[/] 4800[/] 9600[] 19200[] 38400[] 57600[] 115200[]
36+
rs232_params(RS_BAUD_9600|RS_STOP_1|RS_BITS_8,RS_PAR_NONE); // Bauds tested 1200[/] 2400[/] 4800[/] 9600[/] 19200[X] 38400[X] 57600[] 115200[]
3537
rs232_init();
3638
#endif
3739
#ifdef __SPECTRANET__
@@ -59,9 +61,14 @@ void io_send_byte(unsigned char b)
5961
#ifdef __RS232__
6062
if (io_initialized==1)
6163
{
62-
//zx_border(INK_RED); //DEBUG Timing *IRQ-OFF
63-
rs232_put(b);
64-
//zx_border(INK_CYAN); //DEBUG Timing *IRQ-ON
64+
#ifdef __SPECTRUM__
65+
if(is_extend==1) {zx_border(INK_BLACK);} else {zx_border(INK_WHITE);} //RS232 Raster Bars
66+
#endif
67+
rs232_put(b); //*IRQ-OFF (SENDING DATA)
68+
69+
#ifdef __SPECTRUM__
70+
if(is_extend==1) {zx_border(INK_GREEN);} else {zx_border(INK_BLACK);} //RS232 Raster Bars
71+
#endif
6572
}
6673
#endif
6774
#ifdef __SPECTRANET__
@@ -74,19 +81,29 @@ void io_send_byte(unsigned char b)
7481

7582
void io_main(void)
7683
{
77-
#ifdef __RS232__
78-
//zx_border(INK_RED); //DEBUG Timing *IRQ-OFF // <TIME>*IRQ STATE [EXECUTION PATH]
79-
if (rs232_get(&inb) != RS_ERR_NO_DATA) // Bit bashing port Path:[DATA<80*IRQ-OFF>] || [NO DATA<10>*IRQ-OFF] // *IRQ - OFF, getK() blocked
80-
{//zx_border(INK_CYAN); //DEBUG Timing *IRQ-ON
81-
/* [RX TTY - Draw Screen] */
82-
ShowPLATO(&inb,1); // Draw terminal <20>*IRQ-ON // *IRQ - ON
84+
#ifdef __RS232__
85+
86+
//Don't try to wrap this in for Rasta bars, it just flashes every call to io_main.
87+
if (rs232_get(&inb) != RS_ERR_NO_DATA) // *IRQ-OFF (RECEIVING DATA)
88+
{ /* [RX - Display] */
89+
#ifdef __SPECTRUM__
90+
if(is_extend==1) {zx_border(INK_BLACK);} else {zx_border(INK_WHITE);} //RS232 Raster Bars- A little lie, the IO has been done.
91+
#endif
92+
ShowPLATO(&inb,1);
93+
#ifdef __SPECTRUM__
94+
if(is_extend==1) {zx_border(INK_GREEN);} else {zx_border(INK_BLACK);} //RS232 Raster Bars
95+
#endif
8396
}
8497
else
85-
{ /* [NO RX TTY - KEY scan] */
86-
for(int Kscan=0;Kscan<40;Kscan++) // *IRQ - ON/OFF(IF Key TTY)
87-
{
88-
keyboard_main(); // [Path: [No key<1>*IRQ-ON] || [key local process<2>*IRQ-ON] || [key send data<80>*IRQ-OFF]
89-
}
98+
{ /* [NO RX - KEY scan] */
99+
#ifdef __SPECTRUM__
100+
if(is_extend==1) {zx_border(INK_GREEN);} else {zx_border(INK_BLACK);} //RS232 Raster Bars
101+
#endif
102+
for(int Kscan=0;Kscan<30;Kscan++) //Extra keyboard scanning
103+
{
104+
keyboard_main();
105+
}
106+
90107
}
91108
#endif
92109
#ifdef __SPECTRANET__

src/keyboard.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
* Based on Steve Peltz's PAD
44
*
55
* Author: Thomas Cherryhomes <thom.cherryhomes at gmail dot com>
6-
* Owen Reynolds
76
*
87
* keyboard_base.c - Keyboard functions (base)
98
*/
@@ -20,9 +19,11 @@
2019
#include "plato_key.h"
2120
#include "help.h"
2221

22+
#include "sound.h" //Added sound
23+
2324
extern padBool TTY;
2425
static unsigned char ch;
25-
static unsigned char is_extend=0;
26+
unsigned char is_extend=0; //deleted static is used in IO.C now for Rasta bars
2627

2728
/**
2829
* keyboard_out - If platoKey < 0x7f, pass off to protocol
@@ -50,33 +51,35 @@ void keyboard_out(unsigned char platoKey)
5051
*/
5152
void keyboard_out_tty(char ch)
5253
{
53-
io_send_byte(ch); // *IRQ - OFF
54+
io_send_byte(ch); // *IRQ-OFF (SENDING DATA)
5455
}
5556

5657
/**
5758
* keyboard_main - Handle the keyboard presses
5859
*/
5960
void keyboard_main(void)
6061
{
61-
ch=getk(); // <TIME>*IRQ STATE [EXECUTION PATH]
62-
if (ch!=0x00) // [KEY Local] [KEY TTY] //Path: ( [KEY Local <1-4>*IRQ-ON] || [KEY TTY <80>*IRQ-OFF] ) || [NO Key hit <1>*IRQ-ON]
62+
ch=getk();
63+
if (ch!=0x00)
6364
{
64-
if (is_extend==0 && ch==0x0e) // EXTEND pressed. // <2>*IRQ-ON
65+
bit_fx4(0); //Keyboard click - until I find some thing better
66+
67+
if (is_extend==0 && ch==0x0e) // EXTEND pressed.
6568
{
6669
#ifdef __SPECTRUM__
6770
zx_border(INK_GREEN);
6871
#endif
6972
is_extend=1;
7073
}
71-
else if (TTY) // <80>*IRQ-OFF (SENDING DATA)
74+
else if (TTY)
7275
{
73-
keyboard_out_tty(ch);
76+
keyboard_out_tty(ch); // *IRQ-OFF (SENDING DATA)
7477
}
75-
else if (is_extend==1 && ch==0x30) // <1>*IRQ-ON
78+
else if (is_extend==1 && ch==0x30)
7679
{
7780
help_run();
7881
}
79-
else if (is_extend==1) // <4>*IRQ-ON
82+
else if (is_extend==1)
8083
{
8184
#ifdef __SPECTRUM__
8285
zx_border(INK_GREEN);
@@ -87,18 +90,15 @@ void keyboard_main(void)
8790
zx_border(INK_BLACK);
8891
#endif
8992
}
90-
else // <3>*IRQ-ON
93+
else
9194
{
9295
#ifdef __SPECTRUM__
9396
zx_border(INK_BLACK);
9497
#endif
9598
keyboard_out(key_to_pkey[ch]);
9699
}
97100
}
98-
else // [NO KEY] // <1>*IRQ-ON
99-
{
100-
printf(""); // delay -- May be remove this and add a few more to the keyboard scan loops
101-
}
101+
// ELSE here for No Keypress events
102102
}
103103

104104
/**

src/main.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,15 @@
77
#include "connect.h"
88
#include "splash.h"
99

10+
#include "sound.h" //Added sound for Keyboard and ready beep
11+
1012
unsigned char already_started=0;
1113

1214
void main(void)
1315
{
16+
#ifdef __SPECTRUM__
17+
zx_border(INK_BLACK); //Tidy up the borders on start up
18+
#endif
1419
screen_init();
1520
terminal_init();
1621
ShowPLATO(splash,sizeof(splash));
@@ -19,14 +24,16 @@ void main(void)
1924
connect();
2025
#endif
2126
io_init();
27+
28+
bit_play("2A--"); //Ready beep
29+
2230
for (;;)
2331
{
24-
//zx_border(INK_CYAN); //Debug timing
25-
for(int Kscan=0;Kscan<40;Kscan++) // <TIME>*IRQ STATE [EXECUTION PATH]
26-
{ // [NO KEY] [KEY Local] [KEY TTY]
27-
keyboard_main(); // [<1>*IRQ-ON] [<4>*IRQ-ON] [<80>*IRQ-OFF]
28-
}
29-
io_main(); // [NO RX TTY - KEY scan] [RX TTY - Draw Screen]
30-
// [<10>*IRQ-OFF - <40>*IRQ-ON] [<80>*IRQ-OFF - <20>*IRQ-ON]
32+
for(int Kscan=0;Kscan<20;Kscan++) //Keyboard scanning loop
33+
{
34+
keyboard_main();
35+
}
36+
37+
io_main();
3138
}
3239
}

0 commit comments

Comments
 (0)