Language Card questions [message #375460] |
Mon, 05 November 2018 05:33 |
|
Originally posted by: Marc Golombeck
Hello group,
I have a question related to the correct activation of the language card memory in the Apple //e (enhanced version): Are there any differences compared to the standard approach in 64k Apple ][/][+ computers?
I have found these commands:
WRITERAM EQU $C081 ; read ROM write RAM - toggle 2 times
READROM EQU $C082 ; read ROM no write - toggle 1 time
READWRITE EQU $C083 ; read & write RAM - toggle 2 times
READRAM EQU $C080 ; read RAM no write - toggle 1 time
Seems to work fine for me on unenhanced machines but with my enhanced //e I am running into problems.
Anything I have missed?
Thx,
Marc
|
|
|
Re: Language Card questions [message #375489 is a reply to message #375460] |
Mon, 05 November 2018 14:24 |
qkumba
Messages: 1584 Registered: March 2013
Karma: 0
|
Senior Member |
|
|
Can you be specific about the problems that you are having?
There aren't any differences in the general access, but specific instructions that you might use to access the pages could behave differently between the different CPUs.
Note also that these addresses provide access to only bank 2 (i.e. one view of $Dxxx space) along with $E000-FFFF. To access bank 1 instead (i.e. the other $Dxxx space), add 8 to them, so WRITERAM becomes $C089, READWRITE becomes $C08B.
|
|
|
Re: Language Card questions [message #375522 is a reply to message #375489] |
Tue, 06 November 2018 03:33 |
|
Originally posted by: Marc Golombeck
Am Montag, 5. November 2018 20:24:19 UTC+1 schrieb qkumba:
> Can you be specific about the problems that you are having?
> There aren't any differences in the general access, but specific instructions that you might use to access the pages could behave differently between the different CPUs.
> Note also that these addresses provide access to only bank 2 (i.e. one view of $Dxxx space) along with $E000-FFFF. To access bank 1 instead (i.e. the other $Dxxx space), add 8 to them, so WRITERAM becomes $C089, READWRITE becomes $C08B.
Thx for your answer! I figured out that my Virtual II emulator accepts STA-commands to switch on the Language Card but the real hardware needs LDA for example.
So STA $C080 works with Virtual ][ but not with my Apple //e. If I use LDA $C080 it works on my real hardware (as well as with Virtual ][).
Maybe this finding is just some emulator-feature but from my point of view I was thinking that it doesn't matter if I read or write the soft switch addresses.
Maybe I got this still wrong and there is something to learn for me ;-)
|
|
|
Re: Language Card questions [message #375530 is a reply to message #375522] |
Tue, 06 November 2018 10:19 |
zellyn
Messages: 173 Registered: April 2013
Karma: 0
|
Senior Member |
|
|
On Tuesday, November 6, 2018 at 3:33:36 AM UTC-5, Marc Golombeck wrote:
> Am Montag, 5. November 2018 20:24:19 UTC+1 schrieb qkumba:
>> Can you be specific about the problems that you are having?
>> There aren't any differences in the general access, but specific instructions that you might use to access the pages could behave differently between the different CPUs.
>> Note also that these addresses provide access to only bank 2 (i.e. one view of $Dxxx space) along with $E000-FFFF. To access bank 1 instead (i.e. the other $Dxxx space), add 8 to them, so WRITERAM becomes $C089, READWRITE becomes $C08B.
>
> Thx for your answer! I figured out that my Virtual II emulator accepts STA-commands to switch on the Language Card but the real hardware needs LDA for example.
>
> So STA $C080 works with Virtual ][ but not with my Apple //e. If I use LDA $C080 it works on my real hardware (as well as with Virtual ][).
>
> Maybe this finding is just some emulator-feature but from my point of view I was thinking that it doesn't matter if I read or write the soft switch addresses.
>
> Maybe I got this still wrong and there is something to learn for me ;-)
If you find something that works on real hardware, but not on an emulator, and is not correctly identified as a problem by a2audit, please let me know! https://github.com/zellyn/a2audit
Zellyn
|
|
|
|
Re: Language Card questions [message #375536 is a reply to message #375522] |
Tue, 06 November 2018 12:41 |
|
Originally posted by: James Davis
On Tuesday, November 6, 2018 at 12:33:36 AM UTC-8, Marc Golombeck wrote:
> Am Montag, 5. November 2018 20:24:19 UTC+1 schrieb qkumba:
>> Can you be specific about the problems that you are having?
>> There aren't any differences in the general access, but specific instructions that you might use to access the pages could behave differently between the different CPUs.
>> Note also that these addresses provide access to only bank 2 (i.e. one view of $Dxxx space) along with $E000-FFFF. To access bank 1 instead (i.e. the other $Dxxx space), add 8 to them, so WRITERAM becomes $C089, READWRITE becomes $C08B.
>
> Thx for your answer! I figured out that my Virtual II emulator accepts STA-commands to switch on the Language Card but the real hardware needs LDA for example.
>
> So STA $C080 works with Virtual ][ but not with my Apple //e. If I use LDA $C080 it works on my real hardware (as well as with Virtual ][).
>
> Maybe this finding is just some emulator-feature but from my point of view I was thinking that it doesn't matter if I read or write the soft switch addresses.
>
> Maybe I got this still wrong and there is something to learn for me ;-)
Reading vs. Writing to the softswitches is important. Read your Apple IIe Technical Reference Manual. If you don't have one, you can download it from Asimov.
|
|
|
Re: Language Card questions [message #375537 is a reply to message #375522] |
Tue, 06 November 2018 12:56 |
qkumba
Messages: 1584 Registered: March 2013
Karma: 0
|
Senior Member |
|
|
> So STA $C080 works with Virtual ][ but not with my Apple //e. If I use LDA $C080 it works on my real hardware (as well as with Virtual ][).
Great. That's a bug for sure. I suggest that you write to support@virtualii.com to report it.
It's a bug in MAME, too, as it turns out. I can fix that one.
|
|
|
|
Re: Language Card questions [message #375599 is a reply to message #375545] |
Wed, 07 November 2018 20:12 |
qkumba
Messages: 1584 Registered: March 2013
Karma: 0
|
Senior Member |
|
|
To be specific, STA behaves like a single access (i.e. it will enable the bank but not enable writing). Two or more STAs behave like just one STA.
So if you care only about reading from the LC, and don't want to affect flags, you can STA. If you need to enable writing, then you'll need an instruction that performs a read, like LDA or BIT.
|
|
|
|