Toshiba T1000

Locked
JohnElliott
Posts: 51
Joined: Sun 31 Jan, 2016 7:29 pm

Toshiba T1000

Post by JohnElliott » Tue 07 Nov, 2017 10:50 pm

I'm currently working on the Toshiba T1000, the T3100e's little brother. This has a number of unique features, and I'd welcome some advice regarding a couple:

i) The T1000 has an optional 768k memory expansion, which is battery-backed and can be configured as a persistent RAMdisk. The question is how I should attempt to implement this in PCEM -- as a very small hard drive with a fixed format, or as a very big NVRAM?

ii) I'm experiencing lockups in screen repainting. Looking in the debugger, there appears to be a deadlock: the video blit thread is waiting for the wake_blit_thread event:

Code: Select all

thread_wait_event(blit_data.wake_blit_thread, -1);
while the main thread is waiting for the buffer_not_in_use event:

Code: Select all

thread_wait_event(blit_data.buffer_not_in_use, 1);
It only seems to happen when using my T1000 video output code, and I'm not sure why since it's pretty much the same as the T3100e video code, which doesn't lock up as far as I can see.

I've attached the T1000 patch as it stands, in case anyone wants to look over my code and point out what I'm doing wrong. This is definitely work in progress and not ready to merge yet, even if the project wasn't currently in feature freeze.
Attachments
t1000.patch
(53.32 KiB) Downloaded 12 times

Fenix77
Posts: 37
Joined: Fri 01 Sep, 2017 11:59 am

Re: Toshiba T1000

Post by Fenix77 » Wed 08 Nov, 2017 12:09 am

Hello.

The Toshiba T1000 had 512kb of RAM as basic configuration and the 768kb expansion fills the remaining 128kb of conventional RAM and adds another 640kb.
That 640 kb can be used as LIM EMS 3.2 or Hard-RAM. In the original BIOS the user can choose the amount of memory needed for one or the two aforementioned options.
Even the EMS port can be chosen.

I found some info in minuszerodegree.

Unfortunately I'm not a programmer and i cannot help you with the bugs, may be Sarah can.

Thanks for your effort, it is a very interesting ptoject

SarahWalker
Site Admin
Posts: 1365
Joined: Thu 24 Apr, 2014 4:18 pm

Re: Toshiba T1000

Post by SarahWalker » Wed 08 Nov, 2017 5:49 pm

JohnElliott wrote:i) The T1000 has an optional 768k memory expansion, which is battery-backed and can be configured as a persistent RAMdisk. The question is how I should attempt to implement this in PCEM -- as a very small hard drive with a fixed format, or as a very big NVRAM?
I'd suggest implementing this as an NVRAM - I'm guessing the sector-based interface for the hard drive code probably won't make much sense here.

I'll have a look to see if I can determine why you're getting deadlocks.

JohnElliott
Posts: 51
Joined: Sun 31 Jan, 2016 7:29 pm

Re: Toshiba T1000

Post by JohnElliott » Wed 08 Nov, 2017 8:04 pm

Thanks! Let me know if you need the ROMs.

JohnElliott
Posts: 51
Joined: Sun 31 Jan, 2016 7:29 pm

Re: Toshiba T1000

Post by JohnElliott » Sat 18 Nov, 2017 10:14 pm

I haven't got any further with the video lockups, but I think I've got the rest of the T1000 functionality nailed down now, so here's an updated patch.
Attachments
t1000_v2.patch
(55.33 KiB) Downloaded 17 times

JohnElliott
Posts: 51
Joined: Sun 31 Jan, 2016 7:29 pm

Re: Toshiba T1000

Post by JohnElliott » Sun 17 Dec, 2017 2:41 pm

This patch has the same bug as the T3100e emulation (writing off the end of the normcols / blinkcols array) and needs the same fix.

Code: Select all

--- ../../387ac.t1k/src/vid_t1000.c     2017-11-18 21:52:37.408574610 +0000
+++ vid_t1000.c 2017-12-17 14:35:45.255963829 +0000
@@ -562,15 +562,11 @@
                {
                        blinkcols[n][0] = normcols[n][0] = blue;
                        blinkcols[n][1] = normcols[n][1] = grey;
-                       blinkcols[n+128][0] = normcols[n+128][0] = blue;
-                       blinkcols[n+128][1] = normcols[n+128][1] = grey;
                }
                else                            /* Normal */
                {
                        blinkcols[n][0] = normcols[n][0] = grey;
                        blinkcols[n][1] = normcols[n][1] = blue;
-                       blinkcols[n+128][0] = normcols[n+128][0] = grey;
-                       blinkcols[n+128][1] = normcols[n+128][1] = blue;
                }
                if (t1000->attrmap & 8) boldcols[n] = 1;        /* Bold */
        }
        

SarahWalker
Site Admin
Posts: 1365
Joined: Thu 24 Apr, 2014 4:18 pm

Re: Toshiba T1000

Post by SarahWalker » Mon 08 Jan, 2018 9:58 pm

I'm not seeing any lockups here. I made some locking changes very late in v13 development (11th December), have you reproduced the lockups since then?

JohnElliott
Posts: 51
Joined: Sun 31 Jan, 2016 7:29 pm

Re: Toshiba T1000

Post by JohnElliott » Tue 09 Jan, 2018 9:21 pm

I've applied the current patch to revision 8329a0b and it's run for over an hour without any lockups, so it looks like your changes fixed it.

SarahWalker
Site Admin
Posts: 1365
Joined: Thu 24 Apr, 2014 4:18 pm

Re: Toshiba T1000

Post by SarahWalker » Wed 10 Jan, 2018 8:45 pm

Committed at rev 999.

Locked