Post by moodswing on Nov 27, 2008 10:29:31 GMT -5
On my Turbo Master I have JiffyDOS V6.01 installed.
There seems to be a bug though in the kernal UNTLK subroutine. I first noticed this problem when I tried to run the Super-C linker. At first I thought the fault was with the linker.
A while ago though, I wrote a short ML program to read the error channel--along these lines.
It works once, but if called twice, it doesn't. At 1 MHz there is no problem. My SCPU has no problem with it either. On the Turbo Master at 4 MHz with JiffyDOS removed, it again works. I spent hours poring over the Turbo Master JiffyDOS routines trying to figure out what was going on. I'm still not sure.
I think that after the JiffyDOS ACPTR subroutine gets done turning the Turbo Master back to 4 MHz, the drive needs extra time. The standard kernal ACPTR does extra work at 1 MHz, so the drive has enough time, but JiffyDOS returns to 4 MHz too soon. If an UNTLK is issued immediately after the last ACPTR, the drive gets confused.
So I modified my above routine as
This fixed the problem for this particular program. To make it more permanent, I burned another JiffyDOS EPROM with a patch at the beginning of the standard kernal UNTLK.
>edef 78 f7 00 ea
>edf3 20 8e ee 09
>edf7 08
00 dd
And now Super-C works too.
For anyone wishing to modify their Turbo Master EPROM using my suggested patch, it is laid out as follows:
0000 - 1fff 8 kilobytes of BASIC
2000 - 2fff 4 kilobytes of empty space
3000 - 3fff 4 kilobytes of character generator ROM
4000 - 5fff 8 kilobytes of JiffyDOS kernal
6000 - 7fff 8 kilobytes of standard kernal (Schnedler patched)
for a total of 32 kilobytes. You will need another 27256 EPROM, unless you don't mind erasing your original. (Right.)

A while ago though, I wrote a short ML program to read the error channel--along these lines.
stz $90
lda $ba
jsr talk
lda #$6f
jsr tksa
ldy #0
g0 jsr acptr
sta $200,y
iny
lda $90
beq g0
jmp untlk
It works once, but if called twice, it doesn't. At 1 MHz there is no problem. My SCPU has no problem with it either. On the Turbo Master at 4 MHz with JiffyDOS removed, it again works. I spent hours poring over the Turbo Master JiffyDOS routines trying to figure out what was going on. I'm still not sure.
I think that after the JiffyDOS ACPTR subroutine gets done turning the Turbo Master back to 4 MHz, the drive needs extra time. The standard kernal ACPTR does extra work at 1 MHz, so the drive has enough time, but JiffyDOS returns to 4 MHz too soon. If an UNTLK is issued immediately after the last ACPTR, the drive gets confused.
So I modified my above routine as
stz $90
lda $ba
jsr talk
lda #$6f
jsr tksa
ldy #0
g0 jsr acptr
sta $200,y
iny
lda $90
beq g0
smb 0,7 ;SLOW DOWN
jmp untlk
This fixed the problem for this particular program. To make it more permanent, I burned another JiffyDOS EPROM with a patch at the beginning of the standard kernal UNTLK.
>edef 78 f7 00 ea
>edf3 20 8e ee 09
>edf7 08

And now Super-C works too.

For anyone wishing to modify their Turbo Master EPROM using my suggested patch, it is laid out as follows:
0000 - 1fff 8 kilobytes of BASIC
2000 - 2fff 4 kilobytes of empty space
3000 - 3fff 4 kilobytes of character generator ROM
4000 - 5fff 8 kilobytes of JiffyDOS kernal
6000 - 7fff 8 kilobytes of standard kernal (Schnedler patched)
for a total of 32 kilobytes. You will need another 27256 EPROM, unless you don't mind erasing your original. (Right.)