VOGONS


First post, by davecom

User metadata
Rank Newbie
Rank
Newbie

Hi All,

Well I have my emulator to the point of booting into Casette BASIC. I just implemented the keyboard and I'm wondering why I'm only seeing apostrophes (') in BASIC when I type. The scan codes look correct to me from my PPI and I'm just storing those scan codes in port A and calling interrupt line 1 on the PIC. Has anyone seen behavior like this before and have an idea where I have gone wrong? A screenshot is attached so you can see the apostrophes I can type (no matter what key I hit). The strange u under the cursor I think is a separate problem.

Not sure why the bytes are also wrong... this is a 640K machine but maybe Casette BASIC V1 doesn't know about more than 64K?

Thanks in advance!

PS My hacky source code for the PPI is here if you're interested:
https://github.com/davecom/DK86PC/blob/master/PPI.cpp

The attachment Screen Shot 2021-01-03 at 9.30.00 PM.png is no longer available

Reply 1 of 9, by Jo22

User metadata
Rank l33t++
Rank
l33t++

This is very interesting, I wished I could help.
All I can say is, that GW-BASIC has a ~64KB limit, too.
According to the screenshots found online, it's 60300 bytes..
I assume it's related to the limit of what a COM file or a simple memory segment can hold in Real-Mode.
Ironically, though, GWBASIC was distributed as an EXE file..
(Makes me wonder if EXE2BIN coukd7 turn it into a COM file!)

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 2 of 9, by davecom

User metadata
Rank Newbie
Rank
Newbie

Thanks for the reply. I believe the memory issue is related to a 64K limit after learning some more.

However, the apostrophes thing I have no idea what is going on. Any ideas about the reason all keystrokes are ending up as apostrophes I would be interested in. I have verified the initial scan codes are correct, but somehow they are being transformed incorrectly I suppose.

Reply 3 of 9, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Hi again, not sure if this helpful, but on an XT machine I sometimes got weird
characters if I used an AT keyboard switched to PC/XT mode.
More precisely, if I used the arrow keys or other extra keys not found on a true XT keyboard.
Also, the XT machine would make a beep sound whenever I pressed the extra keys (the key presses worked, though).

Again, not sure if this is related in any way. 😅
It's just the closest thing I've encountered in the past.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 5 of 9, by davecom

User metadata
Rank Newbie
Rank
Newbie

Thanks for the replies.

So, this is an XT BIOS (the public domain one) and the scan codes are XT scan codes that I am following.

It could be a CPU bug of course—I'll need to rerun my automated tests. Related aside—is there a raw ROM that does more extensive CPU tests than the public domain BIOS does? I have alternative tests, but I don't love them. I am trying the 5150 Diagnostics ROM, but I am having some trouble booting it, so it's not super helpful at this point.

Reply 7 of 9, by davecom

User metadata
Rank Newbie
Rank
Newbie

So, it turned out to be a problem with my XLAT instruction. Next issue... always seeing a ü where the cursor is positioned. What controls in Casette BASIC the character under the cursor? Screenshot attached.

The attachment CasetteBASIC.png is no longer available

Reply 8 of 9, by davecom

User metadata
Rank Newbie
Rank
Newbie

If anyone is interested in taking a look at this, I now have it building in Visual Studio and have uploaded a solution file to the repository.

Reply 9 of 9, by davecom

User metadata
Rank Newbie
Rank
Newbie

Incase anyone digs up this old thread... the weird u character turned out to be something related to not respecting segment registers in certain opcodes. In other words it was a CPU bug, not CGA bug.

I'm successfully running some BASIC now.