You will not be able to post if you are still using Microsoft email addresses such as Hotmail etc
See here for more information viewtopic.php?f=20&t=7296
Check if your IP is banned
viewtopic.php?t=7286

General Stuff(tm)

Blogs & guides and tales of woo by forum members.
User avatar
stephen_usher
Site sponsor
Site sponsor
Posts: 6763
Joined: Mon Nov 13, 2017 7:19 pm
Location: Oxford, UK.
Contact:

Re: General Stuff(tm)

Post by stephen_usher »

Much progress today.

Despite documentation on the ZX8302 ULA registers and the IPC (keyboard/beep/RS232 receive) co-processor being between unclear and down right absolutely wrong I managed to get it working. Much consternation also caused by the emulator I'm using requiring the status register to be read twice to get the correct value which the original hardware doesn't.

Anyway, I can make it beep, run the internal loopback test and read the keyboard. This was the major sticking point and I can now move forward and work out how to create the main test menu and then write the main tests.

Anyway, this is what it looks like:


Intro retro computers since before they were retro...
ZX81->Spectrum->Memotech MTX->Sinclair QL->520STM->BBC Micro->TT030->PCs & Sun Workstations.
Added code to the MiNT kernel (still there the last time I checked) + put together MiNTOS.
Collection now with added Macs, Amigas, Suns and Acorns.
User avatar
stephen_usher
Site sponsor
Site sponsor
Posts: 6763
Joined: Mon Nov 13, 2017 7:19 pm
Location: Oxford, UK.
Contact:

Re: General Stuff(tm)

Post by stephen_usher »

The ROM now has a useful error report if the base RAM test fails.

I spent all the morning completely re-writing the code and replacing it with something which actually works.

capture.jpg
capture.jpg (292.94 KiB) Viewed 59 times

It outputs the faulting address and bit map to the serial port and then writes coloured bands into video memory. If at least one RAM chip is working and the display system can output then this will be useful information.

The first band denotes which memory bank the error occurred in, white for the lower 64K and black for the upper.

The following seven bands denote the status of bits 7 -> 0.
Intro retro computers since before they were retro...
ZX81->Spectrum->Memotech MTX->Sinclair QL->520STM->BBC Micro->TT030->PCs & Sun Workstations.
Added code to the MiNT kernel (still there the last time I checked) + put together MiNTOS.
Collection now with added Macs, Amigas, Suns and Acorns.
User avatar
stephen_usher
Site sponsor
Site sponsor
Posts: 6763
Joined: Mon Nov 13, 2017 7:19 pm
Location: Oxford, UK.
Contact:

Re: General Stuff(tm)

Post by stephen_usher »

So... trying to get serial port receiving working.... Looks like I'm going to enable interrupts and use an interrupt service routine. Also, the IPC protocol looks to be far more complex that what I'd gathered from the emulator code.

Having found the code used in the Minerva QDOS replacement ROM I'm going to have to rewrite all my keyboard reading code again as well and make that interrupt driven.

Trying to use polling for this doesn't work as the IPC crashes if you poll it when it hasn't raised an interrupt.
Intro retro computers since before they were retro...
ZX81->Spectrum->Memotech MTX->Sinclair QL->520STM->BBC Micro->TT030->PCs & Sun Workstations.
Added code to the MiNT kernel (still there the last time I checked) + put together MiNTOS.
Collection now with added Macs, Amigas, Suns and Acorns.
User avatar
stephen_usher
Site sponsor
Site sponsor
Posts: 6763
Joined: Mon Nov 13, 2017 7:19 pm
Location: Oxford, UK.
Contact:

Re: General Stuff(tm)

Post by stephen_usher »

Much "fun" with interrupts today.

Designed and build a set of interrupt service routines. Tested it all in an emulator... worked a treat for reading the keyboard.

Eventually tested on a real machine... *CRASH* or *HANG* or *CRASH* *REBOOT*.

Even if the interrupt routine was a mere "rte" it would hang the machine.

Eventually, after many hours and a discussion on the QL Forum discord tried a different way of writing to a register in the chipset and it finally worked.

This means that I have a reliable, interrupt driven method of reading not only the keyboard but also the serial ports, which can be used in future for the menu system. It also indirectly tests the interrupt system.
Intro retro computers since before they were retro...
ZX81->Spectrum->Memotech MTX->Sinclair QL->520STM->BBC Micro->TT030->PCs & Sun Workstations.
Added code to the MiNT kernel (still there the last time I checked) + put together MiNTOS.
Collection now with added Macs, Amigas, Suns and Acorns.
Post Reply

Return to “MEMBER BLOGS”