I've been looking into the Tandy 1000 SL and TL tech reference manuals. These 2 seems to pretty much the same in terms of I/O port configurations.
I've took a look into port FFEA on both the TL and SL. It seems that bit 6 and 7 control the memory configuration for the system. On the TL tech ref manual there is a writtend hand note stating:
So if it disables that access is because setting 0 to bit 6 or 7 will make the video memory behave like the SL or in the TL as if the 128kb upgrade is not installed. Intrigued by this i wrote a small program to set my FFeA port on my Frankentandy:
Yes i know i get the return value in decimal, but it was just easier for me, i got that code elsewhere. So trying it out i actually set the port to the right value. Before i set both bit 6 and 7 to 1 i read the port and get a value of 88 decimal or 58 hexadecimal. That's 0101 1000 in binary.
So i after i set bit 6 and 7 to 1 i get a decimal value of 216. 1101 1000 in bunary. If i run the program again the values go between 216 and 200. The reason for this is explained in the SL tech manual, that when bit 4 is read the returned bit is inverted.
In any case, after setting the port value to D8 or C8 the system locks when i try to load any program. I think the reason for this is that now when a program tries to load data into the video memory it tries to do it on the A000 to BFFF range, which of course does not exist on the SL. There is no memory in that range so the system locks. That's my theory at least.
A 768Kb memory upgrade might be possible in theory, but 2 things need to be done. Physical hardware mod on the Sl motherboard for the additional 128Kb of RAM and patching the SL BIOS to set the ports accordingly to the detected RAM. My guess is that the TL BIOS sets the FFE9 port accordingly when it detects 768kb during RAM test on POST.
Unfortunately this is not a trivial task. Tandy probably did this to justify the TL as a more desirable machine and the higher price.
I've took a look into port FFEA on both the TL and SL. It seems that bit 6 and 7 control the memory configuration for the system. On the TL tech ref manual there is a writtend hand note stating:
Writing 0 to bit 6 or 7, with the 128Kb upgrade installed, will diable access to memory between 80000 - 9FFFF
So if it disables that access is because setting 0 to bit 6 or 7 will make the video memory behave like the SL or in the TL as if the 128kb upgrade is not installed. Intrigued by this i wrote a small program to set my FFeA port on my Frankentandy:
Code:
IDEAL
MODEL small
STACK 32
p8086
DATASEG
value DB "Value on port FFEA is: ", '$'
res DB 6 dup ('$')
value2 DB 13,10,"Value on port FFEA is now: ",'$'
CODESEG
PROC hex2dec
mov cx, 0
mov bx, 10
loop1:
mov dx, 0
div bx
add dl, 30h
push dx
inc cx
cmp ax, 9
jg loop1
add al, 30h
mov [si], al
loop2:
pop ax
inc si
mov [si], al
loop loop2
ret
ENDP hex2dec
start:
mov ax, @data
mov ds, ax
xor ax, ax
mov dx, 0ffeah
in al, dx
push ax
mov si, offset res
call hex2dec
mov dx, offset value
mov ah, 9
int 21h
mov dx, offset res
mov ah, 9
int 21h
pop ax
mov dx, 0ffeah
or al, 11000000b
out dx, al
in al, dx
mov si, offset res
call hex2dec
mov dx, offset value2
mov ah, 9
int 21h
mov dx, offset res
mov ah, 9
int 21h
mov ax, 4c00h
int 21h
END start
Yes i know i get the return value in decimal, but it was just easier for me, i got that code elsewhere. So trying it out i actually set the port to the right value. Before i set both bit 6 and 7 to 1 i read the port and get a value of 88 decimal or 58 hexadecimal. That's 0101 1000 in binary.
So i after i set bit 6 and 7 to 1 i get a decimal value of 216. 1101 1000 in bunary. If i run the program again the values go between 216 and 200. The reason for this is explained in the SL tech manual, that when bit 4 is read the returned bit is inverted.
In any case, after setting the port value to D8 or C8 the system locks when i try to load any program. I think the reason for this is that now when a program tries to load data into the video memory it tries to do it on the A000 to BFFF range, which of course does not exist on the SL. There is no memory in that range so the system locks. That's my theory at least.
A 768Kb memory upgrade might be possible in theory, but 2 things need to be done. Physical hardware mod on the Sl motherboard for the additional 128Kb of RAM and patching the SL BIOS to set the ports accordingly to the detected RAM. My guess is that the TL BIOS sets the FFE9 port accordingly when it detects 768kb during RAM test on POST.
Unfortunately this is not a trivial task. Tandy probably did this to justify the TL as a more desirable machine and the higher price.