-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog.txt
287 lines (256 loc) · 21.2 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
v0.31.4
IRC: Added NICK and PART to the internal command parser that parses messages received from the server. (Sending NICK/PART from client to server is already supported)
IRC: Reverted the upload icon colour back to default, changing it from red to orange serves no purpose anymore.
Drivers: Added timeout to pinging in xport driver, apparently there wasn't one already...
Telnet/Term: Added IAC DM (Data Mark).
Telnet/Term: Prototype scrollable regions (Scroll part of the screen vertically). It can scroll content upwards only! scrolling down requires more work.
Telnet/Term: Rewrote the OSC parser so it is not hardcoded to just reading title changes.
Telnet/Term: Fake RGB24 attribute colour support (Truncates RGB888 to RGB111, yes 1 bit per channel).
Telnet/Term: Rewrote attribute code parser slightly, hopefully I haven't borked colour attribute changes in some way...
Telnet/Term: Cursor is now using s16 instead of s32 (Haven't dared to change this before in case of hidden edge cases).
Telnet/Term: Many little changes and fixes here and there.
Telnet: Added F1-F12, Page Up/Down, End, Home, Insert and Delete function keys.
Buffer system now uses boolean return values instead of cryptic magic numbers as return values on PUSH/POP.
Cleaned up Buffer_PeekLast() and various other functions.
For no real reason: 2 new theme colours: Aqua and hot pink. Don't ask why.
Removed old debug streaming.
Changed Backspace default back from ^H to DEL now that I've found out why it bugged out at times (smdt manually moved cursor and inserted blankspace, it shouldn't do that).
Some UTF-8 code point fixes and additions in U+2500 and a few arrows in U+2190.
Added 68k exception pages (Inspired by Vladikcompers recent exception handler added to SGDK). Still fairly basic but its better than what SMDT had before: no exception handlers at all.
Uname command can now show SMDT build date and time.
Bugs?
Spurious keyboard input when SMDT is overwhelmed by large incoming data transfers? May be emulator/xport emulator error on my end but I have not noticed this problem in previous versions of SMDT...
Bugfixes:
IRC: Receiving NAMES list should no longer show a channel as having new messages.
IRC: Nicklist now shows the last nick in the nicklist. Beware that showing >300 nicks may cause issues still.
IRC: Normal mIRC colours should now work as expected when using 4x8 fonts, albeit in mono (2 colours).
IRC: Now using \4 and \5 to set/unset custom text colouring in IRC (instead of \1 and \2), in hindsight this change was not actually necessary but it doesn't matter anyway.
Telnet/Term: Fixed G1 charset bug that caused the terminal to use the wrong character set in certain applications.
Telnet/Term: Fixed ESC PARAM not resetting all parameters between different escape sequences.
Telnet/Term: Finally fixed wraparound "bug" that appears when the terminal receives \n at column 80 (causing 2 newlines), as opposed to receiving a printable character at column 80 (which should wrap and print to the next line).
Drivers: Maybe fixed PS/2 timing issues on model 2 / NTSC genesis systems?
Known bugs:
TimeToStr_Full() in IRC client does not take your timezone into account? (Command 333 @ IRC.c).
4x8 colouring in IRC can only colour even number of characters, uneven number will result in the final character being uncoloured.
v0.31.3 Minor bugfix
IRC mono colour antialiasing colour is now updated to reflect the new amber text colour.
Interrupts were disabled to early on StateExit() which made the XPN drivers unable to actually communicate during Disconnect(). This caused excessive delays when trying to disconnect from servers.
Added timeouts when doing date synchronization, in case the time server is not responding.
Changed Backspace default from DEL to ^H . As before, this can be changed manually in the quick menu.
v0.31.2 Minor bugfix
IRC TM buffers were not setup correctly on creation, leading to the first line getting coloured.
v0.31.1 Bugfixes & IRC QoL additions
Hexview no longer fails to start when trying to open an empty file.
Rx statistics enabled again in terminal/telnet client, it would previously not record received bytes.
Automatic more/less enabled again. What does this do? well it makes sure that only a screens worth of text can be printed at once, after which is will stop printing text until you press a key.
Setting IRC font while running the IRC client accidently initialized the terminal/tty backend and screwed everything up, whoops.
Actually register nick change with server when doing /nick newnickname.
IRC: Added option for word wrap on screen edge.
IRC: Added option to ignore and not print join/leave messages as they can get somewhat spammy and make some channels hard to read.
IRC: Added 1 bit colouring to 80 column mode; Names are now coloured in both 40 and 80 column mode.
v0.31:
Terminal: Added a few IAC's; Go-Ahead, NOP and End-Of-Record, these will be treated as NOP most of the time. SMDTC does not respond with GA / To GA. Fixes a few bytes that previously got swallowed up by the IAC parser.
Terminal: Added the alternate buffer (mode ?1049 and ?47). Max 80 columns is now enforced when using 4x8 fonts, likewise for the 8x8 fonts a max of 40 columns is enforced. In the future this could be increased to a max of 128 and 64 columns respectively.
Terminal: Minor wraparound fix, terminal wrote 1 character beyond wrap limit.
Gopher: Initial gopher client, WIP.
Filesystem: Added littleFS support. SRAM is now a littlefs filesystem, which means previous SRAM configurations will be lost. New config file will be saved under "/system/smdt_cfg.bin".
Filesystem: New terminal commands: touch, mkdir, ls, rm, cat, mv, cp.
Filesystem: File ops support: r/w, seek, tell and close.
Filesystem: Minimal lsblk implementation.
Filesystem: Scrapped dosFS support.
Misc: Initial bookmark list window, WIP.
Misc: Fixed descender on lowercase g in the 4x8 font set, rounding looks a bit off however.
Misc: Graphics is now compressed in ROM to keep the ROM size below 256 KB.
Misc: Mega/Sega CD can now be detected, for reasons.
Misc: HexViewer can now open and view files on the filesystem.
Misc: Added "About SMDTC" command "about".
Misc: Setting font size now clears text on screen instead of leaving it in a odd looking state.
Misc: Coloured boot messages indicating fail/ok and indentation for submessages.
Misc: Removed some unnecessary menu entries in the quick menu.
Todo:
Gopher: Going back or forward a page.
Gopher: More testing on hardware to see if it can still crash the mega drive.
Bookmarks: Add/Edit bookmark functionality is currently not implemented (Only the window logic is programmed).
Known bugs:
IRC: Nick list is missing 1 nick, see command 353 in IRC.c
IRC: Erroneous string comparison in command 353, in IRC.c
Drivers: PS/2 keyboards may not always be detected when plugged into pin 3+4 (as opposed to pin 1+2). Also needs more testing on NTSC systems.
Drivers: RetroLink cartridge rx issues.
Drivers: xPort device may not be found during startup if the xPort device does not have an IP and or not being ready yet.
Temporary fix, in cases where a device was not detected: try running the command "test -devinit" ( if you can (^: )
v0.30.3:
Terminal: 16 colour support for the 4x8 font. Achieved by sacrificing the inverted character set (only when using 16 colour 4x8!).
Terminal: Added the "tty" command; it initializes the SMDTC TTY to a sane enviroment for a linux tty, although still somewhat iffy and some functionality is still missing.
Terminal: Added support for DECCKM (Cursor Key Format). "Cursor", "Numpad cursor", "Home" and "End" keys should now switch reporting mode correctly.
Terminal: Control characters can now be entered by pressing CTRL + <key>, for example: CTRL+C will send ^C.
Terminal: History queue can now store 2 commands.
UI: Added preliminary ColourPicker, Tab and ConfirmBox widget, these will be finalized later on. These widgets can be tested in the UI tester; Quick menu -> Debug -> UI Tester.
Misc: Boot prompt now uses the terminal instead of the drawing on its own to the window plane. This allows for much better printing, colour and scrolling support if needed.
Fixes:
Terminal: Mode set/reset in parser got broken in an earlier commit. Escape sequences such as "ESC[?Ⓝh" should now work again, applications such as nano now renders properly again.
Terminal: Added a few skeleton escape codes, ie doing the bare minimum to handle them for now so they don't mess with previous/following escape codes.
DevMgr: Joypad was set to a weird state after the PS/2 keyboard detected scan iterated through all ports, which caused a few buttons to not work on joypads.
Drivers: The PS/2 keyboard detection scan will now only scan ports with an unknown ID, this is to avoid disturbing devices which for certain is not a PS/2 keyboard.
Drivers: Hopefully fixed the XPN driver for the last time; Pinging does not get stuck in monitor mode any more.
Misc cursor fixes; due to earlier optimizations the cursor Y position did not always get updated.
Misc fixes in 4x8 font tilesets; 1 stray pixel in one character and 1 missing pixel in another character. The characters in question are used for line drawing.
Known bugs:
IRC: Nick list is missing 1 nick, see command 353 in IRC.c
IRC: Erroneous string comparison in command 353, in IRC.c
v0.30.2:
Telnet/Terminal: Erroneously cleared the entire next row of text every time a newline+carridge return was encountered, this should only be done when also scrolling down to a new line.
IRC: The typing input box at the bottom now uses DMA VRAM copy. Previously a new single tile was uploaded to VRAM for every character you typed.
IRC: Nick list scrollbar hopefully fixed; It could scroll beyond its limits before.
Drivers: Cleaned up XPN network driver. All functions should now work decently; EnterMonitor/ExitMonitor/Connect/Disconnect/Ping/GetIP.
DevMgr: Bugfixed the Set/Reset device pin macro; A device could previously reset pins belonging to a different device, causing all kinds of fun debugging.
Misc: Some failed UTF8 experiments, Prefer CP437 / Extended ASCII instead of UTF8 if given the choice.
Misc: Slimmed UTF8 tables down from 256 bytes to 64 bytes for every table. Now only covers the necessary 0x80-0xBF range.
Misc: Added doxygen comments to the PS/2 keyboard functions.
Misc: Date function added to terminal. Used to sync to a time server and to print the current date.
FixMe: IRC: Nick list is missing 1 nick, see command 353 in IRC.c .
FixMe: IRC: Erroneous string comparison in command 353, in IRC.c .
v0.30.1:
SMDTC: FAT12/16/32 support, file operations and other misc functions added for testing purposes. Disabled by default.
SMDTC: Added time calculation functions. IRC client can now print DD/MM/YY HH:MM:SS date times (previously printed seconds since epoch).
SMDTC: Added system date/time clock, for now it is not synced to anything so it will drift/reset to 0 on power up. Clock drift is due to the fact SMDTC uses VSync (which may be disabled at times) to tick clock.
IRC: Changed TM buffers to use 64x32 tilemaps, the IRC client now supports up to 6 concurrent channel "tabs" (F1-F6).
IRC: Added channel update info in status bar. It shows the channel number (1-6) and if it has any new text.
IRC: Changed MODE command text output to make more sense, taking into account what mode and who set it. Previously everything was printed as "You set personal modes +xyz" which is wrong. More MODE text will be added as I bump into them.
IRC: Added the missing /part command, it is used to leave a channel. Usage: "/part #channel" or "/part" to leave the currently open channel.
Terminal: Added the "uptime" command to show for how long the system has been running.
Terminal: Added clock to status bar.
Quickmenu: 1. Dropped the full on upper case. 2. Organized menues and added font selector for each state (terminal, telnet, irc).
UI: Large visual overhaul. Can no longer cover up status bar either.
UI: Theme support.
v0.30.0:
Terminal: Added bold variant of the 8x8 font.
Terminal: More colours in text output.
Terminal: Added "savecfg" command for saving config to sram.
Terminal: Added "reboot" command to reboot the system, with optional -soft parameter for soft reset instead of the default hard reset.
Terminal: Now wraps at screen edge instead of at column 80.
Terminal: Removed unused leftover variables.
Terminal: Fixed command parser reading some extra garbage if the inputted string was too long for the internal buffer.
Terminal: More stdout work. Automatic "less/more" when more than a full screen worth of text tries to print to the screen in one go.
Telnet/IRC/Terminal now has their own font selection setting, no more keeping track of which state should use what font.
IRC: Fixed a leftover inverted check that caused the irc client to quit prematurely when initializing.
Net: More network callbacks.
XPN: More work done to support b1tsh1ft3r's controller port network adapter. Ping/Get IP/Transmit data/Receive data works good enough.
RLN: More work done to support b1tsh1ft3r's cartridge network adapter. Ping/Get IP/Transmit data works good enough, Receive data does not work correctly (lots of dropped/unprinted bytes?).
Hex viewer can now show the rx buffer, tx buffer and stdout buffer.
v0.29:
IRC: Cursor fix.
Added initial support for xPort module connected to an MD UART port.
PS2KB: Reworked keyboard reading method, it now works on NTSC/MD2 models (Thanks to b1tsh1ft3r).
PS2KB: SendCommand() has been rewritten.
Quality of life improvement to the terminal emulator.
Terminal/Telnet: Code speed improvements/readability decreased
Cursor stuff; 1. Now alternates tile instead of colour, visually the same but now it is actually transparent when it is in the "off" state. 2. Cursor colour can be set and saved.
Terminal: Better BG colouring support when using custom BG colour.
Terminal: More built in commands. See "help" command in SMDTC.
Improved the screensaver. It now has its own 32x32 sprite.
IRC: Fixed some hardcoded addresses that should be using the common address macros.
IRC: More dynamic allocations to free up more RAM outside of the IRC client. malloc / free was not used before because it was broken.
Misc: Renamed save variables.
Misc: A few commands finalized (echo $variables, setting variable values).
IRC: Wrong font applied at IRC init resulting in a hard to read mess.
IRC: Fixed bug where the client did not account for NICKLEN being smaller than your chosen nickname, which caused some issues with private messages.
IRC: Will now attempt to re-register your nick with added underscores in case your nickname is already in use on a server.
IRC: Userlist fixes. x.x
Terminal: Will now properly revert font back when switching state.
v0.28:
Added initial support for b1tsh1ft3r's network cartridge 'RetroLink', allowing much faster network speeds and a MD to be completely stand alone.
Added a screensaver that will activate after 5 minutes of inactivity. Disabled by default.
Buffer system can no longer drop a byte if it is full.
SMDTC start menu has been revamped and simplified. It can now accept addresses to connect to if using retrolink.
VRAM management; Hardcoded addresses all over the codebase has been replaced with common macros (defines). This makes it easy to move around various chunks in VRAM.
Sprite macros; Make it easier to manipulate more than 1 hardcoded sprite.
Logging macros changed around to make it easier to log specific parts.
Old unused macros removed and lot of code clean ups (How much is now broken I wonder...).
Fixed old bug with ESC[A / B / C / D; It didn't always move the cursor by at least 1. Margins only partially implemented.
Terminal: Added "DEC Special Character and Line Drawing Set" character map.
Terminal: Allow printing characters > $7E again; Fixes some issues with certain telnet servers using extended ascii.
Terminal: The terminal state is now acting as a command interpreter, which can be used to type commands and launch sessions with arguments.
Added support for the Sega Saturn keyboard.
PS2KB: Sending commands to a PS/2 keyboard now works. Turns out I was sending the data bits in reverse order.
Device manager cleanup. Keyboards are now initialized externally.
Device manager can now check for sega device identifiers on connected devices.
SMDTC can now handle multiple different keyboards (Not at the same time however).
Initial doxygen comment additions.
Telnet: Title strings should no longer keep appending onto itself when disconnecting and connecting to a server.
v0.27:
SRAM: Added the ability to save config to SRAM.
IRC: Added "tabs" to have several channels/private messaging going at once. It uses 8-bit tilemap buffers in RAM,
it is limited to 3 concurrent "tabs" at once due to RAM requirements (3*8KB = 24KB RAM used). Use F1/F2/F3 to change tab.
IRC: Added a typing input at the bottom of the screen.
IRC: Commands implemented, prefixed with '/'. Use '/raw <IRC COMMAND>' to send raw IRC command strings.
IRC: You can now initiate a private conversation.
IRC: User list added, press F5 to show/hide window.
IRC: Can now change username via the /nick <your_nick> command.
Telnet: Added a proper bell... ok PSG beeps.
Terminal: Added the terminal emulator as its own launchable session type.
TRM: Some windowing cleanup. (TRM = Window plane UI backend).
NET: Moved Networking stuff out of the terminal emulator (Rx/Tx etc) into a new unit 'NET'.
PS2KB: Added timeout code when in the middle of reading a bitstream. May cause dropped key input when the MD is very busy with network traffic. This blocking bug has existed at least since v0.20.
PS2KB: Added Swedish keyboard layout.
Terminal: Added colour support for 4x8 fonts.
Terminal: You can now select to use normal or highlighted colours when using 4x8 fonts with colour. (TODO: Custom colours?).
Terminal: Added a lot of new escape codes; window ops, 256 colour handling and a lot of other minor but obscure escape codes.
Fixed some tables that was supposed to be in ROM but instead got placed in RAM (type const * const varname).
Various bugfixes, most related to mIRC colour fuckery and 4x8 fonts (clearing and printing).
Added some extra Rx buffer statistics.
Cursor tile can now change shapes; block, underline, bar, invisible. Blinking can now also be toggled.
v0.26:
DevMgr: Device manager created. Devices can now be mapped to pin 1+2 or pin 3+4 on any port. 2 PS/2 devices can be on the same port as a UART device.
DevMgr: Serial/UART device can be in any port now (not recommended to change port while tx/rx is ongoing).
DevMgr: Added a temporary crude device detection system. Joypad will be enabled on port 1 only when no keyboard is detected or when keyboard is not in port 1.
PS2KB: Initial HOST->PS/2 communication (PS/2 response is always "rx fail, please resend command" though).
Quickmenu: Some updates regarding device list and selecting UART port.
Quickmenu: Text colour is selectable when using 4x8 font.
Telnet: Added some missing escape codes (skeleton code mostly).
Terminal and telnet: A few tweaks related to scrolling, cursor handling and special characters.
Terminal: Blinky cursor is back. It used to cause lockups, lets hope it doesn't anymore.
More UTF8 "characters" added.
v0.25:
Telnet: More IAC functionality (LINEMODE, TERM_SPEED, SEND_LOCATION, ENVIROMENT_OP, SUPRESS_GO_AHEAD) and enabled the previously disabled echo settings.
Telnet: LINEMODE EDIT setting now controls whether to send bytes in bulk (allowing for local editing) or byte-by-byte to remote server.
Telnet: Fixes to IAC NAWS - Now takes into account column settings (based on font size for now instead of actual 40/80 column setting) and row settings (29 for PAL and 27 for NTSC -- 1 row is always used for status bar at the top).
PC Side: smdt-pc to replace socat has been created, capable of piping and logging Tx/Rx streams.
IRC: Initial IRC support (Line parser/command interpreter).
IRC: mIRC colour support.
IRC: CTCP Support (Version and ping only).
Terminal: Testing 256 column mode for 4x8 fonts and added left/right scrolling for 4x8 fonts.
Terminal: Rewritten MoveCursor function since it was old and buggy.
Terminal: Emulator scrolling bugfixes.
PS2KB: Moved out telnet state specific code.
PS2KB: Rewritten scancode handler, now half the code size and supports all keys/combinations and keyboard layouts (US only for now) - Still TODO: CapsLock/NumLock/ScrollLock handling is not implemented.
A million tiny little tweaks here and there.
v0.24:
Split terminal and telnet client apart (to prepare for other protocols).
Implemented input subsystem.
Changed KB/JP to new input subsystem.
Implemented statemachine (to prepare for other protocols).
Added a startup menu.
Initial IRC state.
v0.23:
Lowered keyboard polling timeout, it caused the text to be printed out in chunks (not very smooth looking).
Detecting (and ignoring) UTF BOM.
Made status icons more attractive.
Added sent/received bytes statistics.
Added hex viewer for RX Buffer.
v0.22 - 2023-11-11:
Added a quick and dirty antialiased 4x8 font.
Added a circular buffer for incoming bytes.
Fixed cursor going rogue when switching between font sizes.
v0.21 - 2023-11-10:
Added support for 4x8 font (thanks to RKT).
v0.21 - 2023-11-09:
Added baud speed selector (300, 1200, 2400, 4800).
#--- Older changes ---
v0.1x-0.20 - 2023-xx-xx:
Implemented IAC code sequence handling.
Implemented basic UTF-8 decoding.
Rewritten escape code sequence handling.
Rewritten line clearing and character printing functions.
Implemented a menu system for changing terminal settings.
Fixed shift key on keyboard not actually shifting letters.
Added terminal type selector (XTerm, ANSI, VT100, MEGADRIVE and UNKNOWN).