-
New firmware R3.13.5
08/29/2020 at 15:59 • 0 commentsAnother minor release, now the firmware comes to version R3.13.5:
- Minor code revisions into BASIC interpreter
- Fixed a buf into the comma-separated printing code that lead to wrong alignment of the text
Grab it, as usual, here: https://github.com/leomil72/LM80C
-
New firmware R3.13.4
07/04/2020 at 17:28 • 0 commentsJust a minor change in firmware:
- Fixed a bug into the drawing line algorithm that crashed the system when there was a gap of 1 pixel between the starting and ending points;
- redefined chars 105,106, and 252 in 6x8
Grab it at https://github.com/leomil72/LM80C
-
New maintenance releases for firmware R3.13
06/14/2020 at 16:05 • 0 commentsIn the last days I've released some maintenance releases for the firmware R3.13, primarily to fix some little bugs. This is the cumulative changelog:
- 3.13.3: fixed a bug with function keys that lead to get a syntax error or a non-function behaviour when pressed them while system was in direct mode and print-on-screen not active, i.e. in a graphics mode 2 & 3.
- 3.13.2: revised code of GPRINT command to avoid an error that emerged when the statement was called with an arguments line too long.
- 3.13.1: fixed a race condition that could lead the interrupt service routine access the PSG reg #7 (mixer) together with some BASIC statements (i.e., SOUND), resulting in wrong values being stored into the mixer.
Please update to the latest release grabbing the firmware from here.
-
New firmware releases R3.12 & R3.13
05/30/2020 at 15:07 • 0 commentsNew releases for the LM80C Color Computer firmware.
In the last days I've released the R3.12 and R3.13 files. They contain a lot of bug fixes and enhancements. Here is the cumulative changelog:
- - New style for "£" char;
- fixed a bug into the automatic shutting down manager of SOUND that didn't de-activate the audio channel into the PSG mixer after a tone had finished its period of reproduction;
- new INSTR statement, returning the position of the first occurrence of one string within another;
- changed the behavior of INKEY statement: now the minimum delay interval is set to 10 hundredths of a second. If a shorter interval is being passed, it will be automatically set to 10 (this is because values under 10 could lead to faulty readings);
- fixed a severe bug originated by a wrong design error of the final PCB: ports A & B of the PSG were inverted into the schematic, same for the definition of the ports into the code;
- fixed a bug into the SOUND statement that accepted the third argument when generating a noise, even the syntax shouldn't accept it.
Please grab the latest revisions from my Github repo.
-
LM80C: a new PCB, a new case
05/20/2020 at 08:21 • 0 commentsFinally… I did it! I made the PCB, working for several weeks designing lines and placing components with KiCAD, to get the final board that you can see in the picture below:
After I received I spent a couple of days by soldering the components, and another day by checking the connections… and eventually I found a couple of issues. Careful, not design errors, just my missings when I reported the prototype circuit into the schematic. I left a pull-up resistor (that I soldered on the back face of the PCB) and I inverted the connections of the I/O ports A & B of the PSG (this has been easy to fix: I just inverted the references of such ports into the code).
I also encountered a little problem with the capacitors’ capacitance of the VDP crystal that lead to a B/W image: I ordered a different component from a differend seller but I forgot to re-evaluate their value (changed them and fixed the issue). Lastly, I discovered that the AY-3-8910 I bought from Chine a couple of months ago was, most likely, a fake/faulty chip and got no sound nor keyboard scanning. Replaced it with the YM2149F I was using on my prototype and everything went fine.
Here is the assembled PCB:
(The socket with no chip on the right, near the UART/USB converter, will be used in a future step to access to an SD card to be used as a mass storage).
I also encapsulated my computer into a case of the time, because I wanted that the feeling of using a real 8-bit computers of the ’80s was full. To get it, I used the C16 case that I got together with the keyboard. This is the final result:
Looks impressive, isn’t it? It seems a real C16, even it’s my LM80C! The next step is to make some adaptations to let the internal connectors go out properly (I missed some holes for just a couple of cm…) and then I have to put the status LEDs onto the top part of the case. And, of course, change the name of the label on the left…
-
New firmware R3.11
05/12/2020 at 13:56 • 0 commentsHello everybody. During these days I spent a lot of time working on the firmware of my LM80C computer trying to add features and fixing little bugs within the code. This is the new R3.11 release of the firmware:
- Changed the way TMR() reads the real time counter so that now continue readings won't slow down the clock itself anymore: this was due to the fact the at each reading I disabled/re-enabled interrupts because I read 2 single bytes from the memory while now I'm reading a single word at a time, so I don't need to disable INTs anymore;
- I also changed the frequency of the keyboard reading. Since this task was very heavy (more than 1,500 clock cycles), instead of doing it each time the interrupt service routine is called (100 times a second), I just execute it 50 times a second, lightening the jobs of the CPU.
Please, grab it from my Github repo: https://github.com/leomil72/LM80C
-
New firmware R3.10
05/08/2020 at 16:05 • 0 commentsAnother firmware release for the joy of everyone. The new R3.10 is out:
- Added GPRINT command to print text and ASCII chars in screen 2 as they would in text modes;
- fixed a bug that lead to unpredictable behaviors when a line longer than 88 chars was received from the serial port: now the interpeter simply drops exceeding chars.
GPRINT is a very interesting command since it let printing text and ASCII chars in screen 2 (the graphic mode) with different colors for each character, acting as an high resolution multicolor mode:
Download the R3.10 release from GitHub: https://github.com/leomil72/LM80C
-
New firmware R3.9
05/02/2020 at 09:47 • 0 commentsAnother good release for the LM80C Color Computer. The new firmware R3.9 is out!
- Added POINT function to get the status of a pixel in G2 mode (set or reset);
- Relocated CTC interrupt vectors to a jump table into RAM so that now the user can configure the CTC channel interrupts to jump to custom routines (included the routine attached to channel 3 that supervises several critical system routines);
- now SERIAL has default arguments for data, parity, and stop bits if not passed;
- changed FN key 5 function;
Grab it as usual at https://github.com/leomil72/LM80C.
-
New firmware R3.8
04/30/2020 at 16:22 • 0 commentsSome minor bug fixes and improvements:
- Fixed a bug in FN key codes that lead to the activation of the wrong FN keys;
- introduced support for NMI custom routines (suggested by nippur72) with NMI statement;
- fixed a bug that lead to un-wanted behaviors when graphic chars were parsed in direct mode.
Grab the code from my Github repo: https://github.com/leomil72/LM80C -
New firmware R3.7
04/29/2020 at 20:39 • 0 commentsLot of improvements on the road:
- Added HELP command to automatically list the line where a program error has occurred;
- added modulo operator '%' to make modulus operations between integers (returns the remainder of an integer division);
- added integer division operator '#' (return the integer part of a division);
- added support for function keys into firmware;
- added KEY command to manage function keys: it is now possible to print the current functions and assign new functions to the keys;
- revised PAUSE code: it is now possible to break the delay with the "RUN STOP" key;
- better error management when in graphic modes: now if an error occurs in G2 and G3 modes, the BASIC interpreter returns into G1 mode; same behavior if an error occurs in direct mode while in graphics modes;
- pressing the "RUN STOP" key in direct mode while in graphic modes leads the interpreter to return to G1 mode.
Grab the new ROM file here: https://github.com/leomil72/LM80C